SOLR:具有多个字段(字段元组)的过滤查询(fq)



如何对字段元组进行筛选查询?

下面是一个例子。假设我有包含distanceid字段的文档。示例数据:

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 *])

相关内容

  • 没有找到相关文章

最新更新