Lucene 查询:提高性能



我使用的是 Lucene.NET 版本2.9.4。

我需要构建一个复杂的查询。我需要在一个地方附近找到酒店。
为此,我知道我任何酒店的纬度/经度以及我的参考点的地理坐标。

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 ...
    )
)

最好的解决方案是什么?

我接受了测试。

第二种解决方案并不比第一种解决方案更快。我使用了 232000 个节点。

最新更新