Lucene查询:提高性能

时间:2013-09-21 16:31:53

标签: performance search lucene

我正在使用Lucene.NET版本2.9.4。

我需要构建一个复杂的查询。我需要找到一个点附近的酒店 要做到这一点,我知道我的酒店的纬度/经度和我的推荐点的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 ...
    )
)

什么是最佳解决方案?

1 个答案:

答案 0 :(得分:0)

我接受了测试。

第二种解决方案首先不是更快。 我使用了232000个节点。