我正在使用 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 ...
)
)
什么是最好的解决方案?