΢ÐÅÀïÃæÔõôÕÒ²»µ½¸½½üµÄÈË(΢ÐÅËÑË÷¸½½üµÄÈËÔõô¿´²»µ½ÎÒ)

Éú»î°Ù¿Æ 2023-04-28 10:03Éú»î°Ù¿Æwww.xingbingw.cn

΢ÐÅÀïÃæÔõôÕÒ²»µ½¸½½üµÄÈË(΢ÐÅËÑË÷¸½½üµÄÈËÔõô¿´²»µ½ÎÒ)¡¢±¾Õ¾¾­¹ýÊý¾Ý·ÖÎöÕûÀí³ö΢ÐÅÀïÃæÔõôÕÒ²»µ½¸½½üµÄÈË(΢ÐÅËÑË÷¸½½üµÄÈËÔõô¿´²»µ½ÎÒ)Ïà¹ØÐÅÏ¢£¬½ö¹©²Î¿¼£¡

£¬ÕâÊÇһƪѧϰ±Ê¼Ç£¬À´×Ô¡¶¼«¿Íʱ´ú¡·³Â¶«ÀÏʦµÄ¡¶¼ìË÷ºËÐļ¼Êõ20½²¡·¡£ÄǺܺᣴ¦ÀíһЩÎÊÌâµÄËã·¨¾­³£ÈÃÎÒ¶úĿһС£±¾´ÎÁÄÌìÖеĿռäËÑË÷Ëã·¨¾ÍÊÇÆäÖÐÖ®Ò»¡£

Ò»¸ö¿Õ¼äËÑË÷ÐèÇóÎÒÃÇÔÚʹÓõØÍ¼µÄʱºò£¬¾­³£»áÓõØÍ¼ËÑË÷¸½½üµÄ¾Æµê£¬¸½½üµÄʳƷµê£¬ÉõÖÁ¸½½üµÄWC¡£»»¾ä»°Ëµ£¬ÎÒÈÏΪ¾ÆµêµÄλÖÃÊǹ̶¨µÄ¡£Ö»ÐèÈ¡ËÑË÷ÇøÓòÄھƵêµÄ¾­Î³¶ÈºÍÎÒÃÇËùÔÚλÖõľ­Î³¶È¼ÆËã¾àÀ룬ÒÀ´Î¼ÆË㲻ͬ¾ÆµêµÄλÖã¬È»ºó½øÐÐÅÅÐò£¬µÃµ½ÎÒÃǸ½½üµÄǰN¼Ò¾Æµê¡£

Èç¹ûÎÒÃÇÔÚÓÃ΢ÐÅ£¬Ò»¶¨ÒªÊìϤ¸½½üµÄÈ˵ŦÄÜ£¬ÄÇôÎÒÃÇÔõô¼ÆË㸽½üµÄÈËÄØ£¿ºÍÕâ¼Ò¾Æµê²»Í¬µÄÊÇÈËÊÇÁ÷¶¯µÄ£¬¼ÆËãÆðÀ´±È½ÏÂé·³¡£Èç¹ûÎÒÃÇÔÚÍøÉϵÄÈ˺ÍÎÒÃÇÏÖÔÚµÄÈËÖ®¼ä×öÒ»¶ÔÒ»µÄλÖüÆË㣬Ȼºó½øÐÐÅÅÐò£¬ÏÔÈ»²»¹»ÇåÎú¡£ËäÈ»ÎÒÃDz»ÖªµÀ½ÖÇøÓжàÔ¶£¬£¬²»Í¬µÄ³ÇÊÐÊDz»ÄÜËã×÷½ÖÇøµÄ(±ß½ç¿ÉÄܸü½ü£¬ºóÃæÔÙ˵)£¬ËùÒÔÎÒÃÇÔÚ¼ÆËã¾àÀëµÄʱºò£¬Ö»ÐèÒª¼ÆËãͬһ¸ö³ÇÊеĽÖÇøµÄÈË£¬ÕâÑù¿ÉÒÔ´ó´ó¼õÉÙ¼ÆËãÁ¿¡£

½øÒ»²½Ëµ£¬Èç¹ûÎÒÃÇÖÜΧµÄÇøÓò¸üС£¬Ò»¸öÇøµÄÔÚÏßÓû§ÓëÎÒÃÇËùÔÚλÖõľàÀë¾Í¿ÉÒÔËõС¡£ÆäʵÏñÕâÑùµÄ¼ÆË㣬ÎÒÃÇÖ»ÐèҪȡ×î½üµÄǰN룬ÓÐʱºò²»ÐèÒªÑϸñÅÅÐò¡£

´ø×ÅËõÐ¡Ãæ»ýµÄÏë·¨£¬ÎÒÃÇÀ´¿´¿´ÈçºÎ¸ü¿ì¸üÇ¡µ±µÄ¼ÆËã¾àÀë¡£

ΪÁ˼ÆËã¾àÀ룬ÎÒÃÇͨ³£Óþ­Î³¶ÈÀ´±íʾλÖá£ÎÒÃÇÐèÒª°Ñ¼ÆËã³öÀ´µÄ¿ÕÇø·Ö³É²»Í¬µÄÇøÓò£¬Ã¿¸öÇøÓòÓÃÒ»¸ö´úÂëÀ´±êʶ¡£±ÈÈçÎÒÃǰÑÒ»¸ö³ÇÊа´ÕÕ¾­Î³¶È·ÖΪËĸöÇøÓò£¬·Ö±ðÓôúÂë00¡¢01¡¢11¡¢10±íʾ¡£Èç¹ûÎÒÃǼÌÐø½«ËüÃÇ»®·ÖÈçÏÂ

Èç¹ûÐèÒª¸ü¾«È·µÄ¾àÀ룬¿ÉÒÔ½øÒ»²½»®·Ö£¬±àÂëλÊý±ä³É4£¬¸ü¾«È·¡£ÓÃÕâÖÖ±àÂ뷽ʽ£¬Í¬Ò»¸öÇøÓòµÄǰ׺ÂëÊÇÒ»ÑùµÄ£¬ÓÐÀûÓÚÎÒÃÇ×öÇøÓò²éѯ¡£±ÈÈçÒ»¸öÇøÓòÕÒ²»µ½µÄʱºò£¬ÎÒÃÇ¿ÉÒÔÀ©´ó·¶Î§¡£

2.1¾Í½ü½â¾ö²éѯ´íÎóÎÊÌâ¡£

Ç°ÃæËµÁË£¬Èç¹û¼ÆË㸽½üµÄÈË£¬¾Í°´ÕÕÒ»¸öÇøÓòµÄÈËÀ´ËÑË÷£¬¼õÉÙÁ˼ÆËãÁ¿¡££¬»¹ÓÐÒ»¸öÎÊÌ⣬¾ÍÊÇÕâ¸öµØÇøµÄÈË¿ÉÄܺÍÎÒÃDz»½ü£¬ÁÚ½üµØÇøµÄÈË¿ÉÄܸü½ü£¬ÈçÏÂͼËùʾ

ÃèÊöÉÏͼÂÌÉ«Èý½Ç·ûºÅ±íʾÎÒµÄλÖá£ÂÌɫԲȦºÍÂÌÉ«Èý½ÇÐηûºÅÊôÓÚÍ¬Ò»ÇøÓò£¬µ«ÏàÁÚÇøÓò¸ü½ü¡£

¶ÔÓÚÕâ¸öÎÊÌ⣬ÎÒÃǼÙÉèÎÒÃÇÈÏΪµÄ¸½½üÇøÓòÊÇ10km¡£Èç¹ûÎÒÃÇÖ»ÔÚÕâ¸öÇøÓòËÑË÷£¬ÏÔÈ»ÎÒÃÇ¿ÉÄÜ»á´í¹ý¸ü½üµÄ¾àÀë¡£ÎÒÃǵÄÇøÓòÀ©´óÁËÒ»±¶£¬´***ÑË÷Ò»¸öÇøÓòµ½ËÑË÷¾Å¸öÇøÓò£¬Ôö¼ÓÁ˰˸ö¸½½üµÄÇøÓò£¬ÕâÑù¾Í²»»áÓÐÒÅ©¡£

2.2 Geohash±àÂë¸Õ²ÅÎÒÃǰ´ÕÕ×Ô¼ºµÄÀí½â¶ÔÇøÓò½øÐÐÁ˱àÂë¡£Èç¹ûÎÒÃǰѵØÇò¿´³ÉÒ»¸ö´óµÄ¶þά¿Õ¼ä£¬¾­¶ÈÃ÷ÏÔÊÇˮƽµÄ£¬Î¬¶ÈÊÇ´¹Ö±µÄ¡£µØÇòµÄ¾­¶È·¶Î§Îª[-180£¬180]£¬Î¬¶ÈµÄÇø¼äΪ[-90£¬90]£»ÎÒÃǼÙÉè±àÂëµÄλÖÃ(¾­¶È104.07γ¶È30.67):

ÔÚ×ÝÏòÉÏ£¬104.07µÄ¾­¶ÈÔÚ0µ½180Ö®¼ä¡£ÎÒÃǽ«¿Õ°×µÄÓҰ벿·Ö±àÂëΪ1£¬²¢ÔÚ180¶ÈÄÚ¼ÌÐøÒ»·ÖΪ¶þ¡£104.07µÄ¾­¶ÈÔÚ90¶Èµ½180¶ÈÖ®¼ä£¬¼ÌÐø±àÂëΪ1£¬ËùÒÔÔÚ¾­¶ÈÉϱàÂëΪ11¡£·½Ïò£¬30.67ά±àÂëΪ0-90·¶Î§ÄÚµÄ1£¬¼ÌÐø³ý·¨¡£30.67ά¶ÈÔÚ0-45·¶Î§ÄÚ±àÂëΪ0£¬Î¬¶È´úÂëΪ10¡£×ÛºÏÆðÀ´£¬ÉÏÊöλÖõĴúÂëΪ1110(ÏȾ­¶È£¬ÔÙά¶È)¡£ÎÒÃÇ×ܹ²Ö»ÓÃ4λ±àÂ룬ÏÔÈ»Á£¶ÈºÜ´Ö¡£Èç¹ûҪϸ»¯£¬Óøü¶àµÄÊý×ÖÀ´±íʾ£¬¾ÍÓÃÕâÖÖ±àÂ뷽ʽ£¬°ÑÕû¸ö¿ÕµÄ¶þάÂëת»»³Éһά£¬ÕâÑù¼ÆËãºÍ²Ù×÷»á¸üÈÝÒס£Èç¹ûÎÒÃÇÓÃ15λ±íʾ¾­¶È£¬15λ±íʾά¶È£¬ÄÇôºÍ¾ÍÊÇ30룬±àÂëºÜ³¤¡££¬ÎÒÃÇÓÃ32¸ö×Öĸ(²»°üÀ¨A£¬I£¬L£¬O) 0-9ºÍb-z¶Ô01×Ö·û´®½øÐÐbase32±àÂ룬½«5¸öÊý×Öת»»³ÉÒ»¸ö×ÖĸºÍÒ»¸öÊý×Ö£¬ÐγÉÒ»¸öÏàËÆ¶È# 34£»W3qcef # 34£¬ÒԱ㽫30λ´úÂëת»»Îª6λ×Ö·û´®¡£ÕâÖÖÓÃÊý×ÖºÍ×Ö·ûÀ´±íʾλÖõıàÂë·½·¨³ÆÎªGeoHash±àÂë¡£

9λGeohashÂëÊÇ45룬Ҳ¾ÍÊÇ¿ÉÒÔ¾«È·µ½4.8m£¬10λgeohashÂë¿ÉÒÔ¾«È·µ½1m×óÓÒ¡£ÍøÉÏÓжÔÓ¦µÄ±í¸ñ£¬Äã¿ÉÒÔ¸ù¾ÝÎÒÃǵľ«¶ÈÒªÇóÑ¡ÔñGeohash±àÂëµÄ±ÈÌØÊý¡£

ȱµã ÓÉGeohash±àÂëµÄ×Ö·û»òÊý×Ö±íʾά¶È¡£¿ÉÄÜÎÒÃÇÔÚʹÓõÄʱºò£¬±ÈÈçÐèÒª3m¾«¶ÈµÄʱºò£¬9λ¾«¶È²»¹»Óã¬10λ¾«¶ÈÌ«¾«È·Óò»ÉÏ¡£Õâʱºò¾ÍÐèÒª¸Ä±ä±àÂ뷽ʽ»òÕßÖ±½ÓʹÓÃÔ­À´µÄ01×Ö·û´®¡£

ÈýÖÖ³£¼ûµÄÈ«ÎÄËÑË÷ÒýÇæ£¬ÈçSolr»òes£¬¶¼Ö§³ÖλÖÃËÑË÷¡£ÒÔsolrΪÀý£¬SolrÖ§³Ö¶àÖÖ¾àÀ볡¶¨Òå¡£³£¼ûÅäÖÃÈçÏÂ

lt£¡-Solr 4.0 4.0°æ±¾4.0»ò¸ü¸ß°æ±¾ÓÐĬÈϵÄ×Ö¶ÎÀàÐͶ¨Ò壬¿ÉÄÜÂÔÓв»Í¬-gt£»lt£»ÀàÐÍÃû³Æ=# 34λÖÃ# 34£»Ë÷¶û.latpointspatialfield # 34 doc values=# 34 True # 34£»/gt¡£lt£»type name=# 34 location _ RPT # 34 class=# 34 sol¡£spatialrecursiveprefixtreefieldÀàÐÍ# 34£»Geo=# 34 true # 34/gt¡£´´½¨Ò»Ð©ÐµIJâÊÔÎĵµ

Ìí¼Ólt gt lt£»doc gt lt¡£×Ö¶ÎÃû=# 34£»id # 34 gt001 lt/field gt¡£lt£»×Ö¶ÎÃû=# 34£»³É¶¼

SolrÖ§³ÖÁ½ÖÖÀàËÆµÄ²éѯ·ÖÎöÆ÷geofit²éѯ·ÖÎöÆ÷ºÍbbox²éѯ·ÖÎöÆ÷¡£

3.1 Geofit Query Analyzer²éѯ¸½½üÊý¾ÝGeofit filter¿ÉÒÔ¸ù¾ÝµØÀí¿Õ¼äÖ®¼äµÄ¾àÀ룬´Ó¸ø¶¨µã½øÐл·ÐιýÂË£¬²éѯ5kmÒÔÄÚµÄÊý¾Ý¡£¸ÃÃüÁîÈçÏÂËùʾ

fq={£¡geofilterfield=location _ p pt=30.67£¬104.05d=1000} sfield:´æ´¢Î»ÖõÄ×Ö¶ÎÃû³Æ¡£Pt:³õʼλÖÃD:¸½½ü¾àÀ룬µ¥Î»¹«Àï½á¹ûÏÔʾ

GEOʹÓÃÁ½¸ö²½ÖèÀ´»ñµÃ½á¹û

¸ù¾Ý¾«¶ÈÒªÇ󣬴´½¨Ò»¸ö±ß³¤ÎªËÑË÷¾àÀëµÄÕý·½Ðα߿ò£¬Í¨¹ýÕâ¸öÕý·½ÐιýÂËÎĵµ¡£¼ÆËãλÖÃÓë±ß¿òÄÚÖÐÐĵľàÀ룬ȻºóÅÅÐò£¬ÒÔ¾àÀëΪԲɸѡ³öÔ²ÍâµÄÊý¾Ý¡£Èç¹ûÊý¾ÝÁ¿ºÜ´ó£¬ÄÇô¾Í²»ÐèÒª¾«È·µÄÑ­»·¹ýÂË£¬¿ÉÒÔʹÓÃbbox inquirer¡£3.2 bbox query analyzer²éѯ¸½½üÊý¾ÝBbox filterÓëgeofit·Ç³£ÏàËÆ£¬Ö»ÒªËüʹÓÃÒª¼ÆËãµÄÔ²µÄ±ß½ç¿ò£¬Ëü¾Í²ÉÓÃÓëgeofitÏàͬµÄ²ÎÊý

fq={£¡Oxfield=location _ p pt=30.67£¬104.05d=1000}ÒòΪûÓо«×¼¹ýÂË£¬ËùÒÔËٶȱȽϿ죬¾Í²»ÌùÁË¡£

3.3¾àÀëÅÅÐò¸ù¾Ý¸Õ²ÅµÄ²éѯ½á¹û£¬×î½üµÄÏÈÀ´£¬ÄÇôÓÐûÓа취¼ÆËãÕâ¸ö¾àÀëÄØ£¿solrÖÐÓÐÖ§³ÖÅÅÐòµÄÏà¹Øº¯Êý

fl=id£¬city_s£¬¾àÀëgeodist(location_p£¬30.67£¬104.05) sort=geodist(location_p£¬30.67£¬104.05)asc£¬µÃ·Ödesc fl=id£¬city_s£¬¾àÀëgeodist(location_p£¬30.67£¬104.05)sort=geodist(location _ p£¬30.67£¬104.05)asc£¬µÃ·Ödesc

ºÍ²éѯÅÅÐò¡£

½ñÌìµ½´ËΪֹ°É¡£

¸ü¶à¹ØÓÚ΢ÐÅÀïÃæÔõôÕÒ²»µ½¸½½üµÄÈË(΢ÐÅËÑË÷¸½½üµÄÈËÔõô¿´²»µ½ÎÒ)µÄÇë¹Ø×¢±¾Õ¾¡£

Copyright@2015-2025 www.xingbingw.cn ÐÔ²¡Íø°æ°åËùÓÐ