2013-09-21 4 views
0

Lucene.NET 버전 2.9.4를 사용하고 있습니다.Lucene 쿼리 : 성능 향상

복잡한 쿼리를 작성해야합니다. 나는 주변의 호텔을 찾을 필요가있다.
내 호텔의 위도/경도와 참조 지점의 geoCoordinate를 알고 있습니다.

Lucene은 수학을 할 수 없으므로 일부 range 필터를 사용하여 searchQuery를 작성하겠습니다.

예 : 쿼리가 긴 것

(
    (latitude:[45 TO 55] AND longitude:[5 TO 95]) 
    OR (latitude:[40 TO 60] AND longitude:[20 TO 80]) 
    OR (latitude:[25 TO 75] AND longitude:[25 TO 75]) 
    OR ... 
) 

, 나는 쿼리가 정교하게 너무 많은 시간이 소요될 수 있음을 우려하고있다.

그러나 나는 생각한다 : inclusive filter을 추가하면 너무 많은 호텔이 내 지점에서 너무 멀리 떨어져있다.

예 :

(
    (latitude:[0 TO 100] AND longitude:[0 TO 100]) 
    AND (
     (latitude:[45 TO 55] AND longitude:[5 TO 95]) 
     OR (latitude:[40 TO 60] AND longitude:[20 TO 80]) 
     OR (latitude:[25 TO 75] AND longitude:[25 TO 75]) 
     OR ... 
    ) 
) 

가장 좋은 방법은 무엇입니까?

답변

0

I를 테스트 하였다.

두 번째 솔루션은 더 빠르지 않습니다. 232000 노드를 사용했습니다.