如何对字段元组进行筛选查询?
下面是一个例子。假设我有包含distance
和id
字段的文档。示例数据:
distance | id
-------------
10.0 | 5
10.0 | 6
10.0 | 7
11.0 | 8
13.0 | 9
现在我想要得到符合以下条件(distance, id) > (10.0, 6)
的项目。因此,响应应该是这样的:
10.0 | 7
11.0 | 8
13.0 | 9
我如何在SOLR中做到这一点?
我知道它类似于游标,但我希望能够从任何文档开始获取数据。
我找到了一个解决方案。条件(distance, id) > (10.0, 6)
等价于条件distance > 10.0 OR (distance = 10.0 AND id>6)
。因此,我们通常搜索大于10.0的距离,但如果它等于10.0,则我们搜索id>6.
这被翻译成一个过滤器查询,看起来是这样的:
fq=distance:{10.0 TO *] OR (distance:10.0 AND id:{6 TO *])
需要注意的是,如果使用函数计算距离,则必须使用frange
并将其放在括号中。示例:
mygeodist=geodist()&fq=({!frange l=10.0 incl=false}$mygeodist) OR (({!frange l=10.0 u=10.0}$mygeodist) AND id:{6 TO *])