0

我正在使用 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 ...
    )
)

什么是最好的解决方案?

4

1 回答 1

0

我被测试了。

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

于 2013-09-23T14:06:12.417 回答