2013-09-21 116 views
0

我正在使用Lucene.NET版本2.9.4。Lucene查詢:提高性能

我需要建立一個複雜的查詢。我需要找到一個點附近的酒店。
要做到這一點,我知道我的酒店的經緯度和我的推薦地點的地理座標。

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

我被測試了。

第二個解決方案不是第一個更快。 我使用了232000個節點。