2013-09-21 114 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个节点。