如何在 Solr 中进行 IN 查询?

Posted

技术标签:

【中文标题】如何在 Solr 中进行 IN 查询?【英文标题】:How to do an IN query in Solr? 【发布时间】:2011-08-23 01:37:58 【问题描述】:

我的文档具有多值字段“sharedTo”,其中包含文档共享到的组。现在我想找到至少共享给给定组列表中的一个的所有文档。例如。我想查找与“foo”组或“bar”组或两者共享的所有文档。目前我正在构建这样的查询:

sharedTo:"foo" OR sharedTo:"bar"

对于每个组,我只需添加一个新的 OR 查询部分。这行得通,但是我想知道是否有更有效的方法来做到这一点,比如

sharedTo IN ('foo', 'bar')

【问题讨论】:

【参考方案1】:

如果您的默认运算符是 OR,那么您可以将查询指定为

sharedTo:('foo' 'bar')

如果您的默认运算符是 AND,那么您必须这样做:sharedTo:(foo OR bar)

【讨论】:

有人知道这里的术语数量是否有实际或硬性限制? (即'foo''bar')【参考方案2】:

上述解决方案对我不起作用。但是这个语法确实

column_name:+(value1 value2)

http://harmssite.com/2012/09/solr-query-for-mimicking-sql-in-operator-functionality/

【讨论】:

【参考方案3】:

如果您使用 SolrJ 作为客户端,您的查询将如下所示:

fq=sharedTo:("foo" OR "bar")

希望对你有帮助

【讨论】:

以上是关于如何在 Solr 中进行 IN 查询?的主要内容,如果未能解决你的问题,请参考以下文章

Solr中如何使用游标进行深度分页查询

solr如何区间查询

如何在 solr 查询中排序之前按分数限制

《艳遇SOLR》9--solr查询--逻辑运算查询

《solr in action》-13-solr的分布式与集群

如何查看 Solr 对 Solr 查询未返回的文档的解释