微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 *])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。