Lucene API를 사용하여 "지정된 반경 내에서 미국에서 가장 가까운 도시 검색"기능을 사용하고 있습니다. 루씬에서 오전 인덱싱 도시의 위도와 긴 값을 다음과 같이이 :Lucene에서 위도 및 경도 값을 정확하게 색인화합니다.
doc.Add(new Field("latitude", paddedLatitude, Field.Store.YES, Field.Index.UN_TOKENIZED));
doc.Add(new Field("longitude", paddedLongitude, Field.Store.YES, Field.Index.UN_TOKENIZED));
루씬은 문자열이 아닌 숫자를 이해하기 때문에이 위도 긴 값을 패딩하고있다. 예를 들어
, 원래의 위도와 긴 패딩 후, 값은 같이 각각 41.811846 및 -87.820628을하는 경우 :
paddedLatitude -> "0041.811846"및 paddedLongitude -> "- 087.820628"
Lucene의 ConstantScoreRangeQuery 클래스를 사용하여 가장 가까운 도시 쿼리를 작성하는 동안 동일한 패딩을 수행합니다.
lat 및 long 값이 10 진수/음수 일 수 있다는 점을 감안할 때 lucene이 숫자 범위/비교 연산을 수행 할 때 검색 결과에서 정확한 가장 가까운 도시를 얻을 수 있도록 색인을 생성하는 올바른 방법입니다. 이 값들은?
감사합니다.
감사합니다 ... 그리고 10 진수는 어떨까요? – user74042
다시 한번 감사드립니다 .... 위의 기사 링크 (http://sujitpal.blogspot.com/2008/02/spatial-search-with-lucene.html)에 언급 된 솔루션을 시도했지만 Lucene.net이 던진 쿼리를 실행합니다. 예외 : 매개 변수 이름 : 위도 System.ArgumentException : 제공된 값이 범위를 벗어났습니다. 매개 변수 이름 : 위도 내 검색어 : 위도 : [131450428 TO 132173263] 경도 : [091694457 TO 092664286] – user74042