如何使用 Solr/Lucene 搜索值列表?

Posted

技术标签:

【中文标题】如何使用 Solr/Lucene 搜索值列表?【英文标题】:How can I search on a list of values using Solr/Lucene? 【发布时间】:2011-02-06 12:02:07 【问题描述】:

给定以下查询:

(field:value1 OR field:value2 OR field:value3 OR ... OR field:value50)

可以将其分解为不那么冗长的内容吗?基本上我有数百个类别 ID,我需要在大量类别 ID 下搜索项目(一次 20-50 个)。在 mysql 中,我只使用 field IN(value1, value2, value3) 而不是 (field = value1 OR field = value2 etc...)

Solr/Lucene 有更简单的方法吗?

【问题讨论】:

***.com/questions/2533815/… 【参考方案1】:

使用

field:(value1 value2 value3)

或者如果你的默认运算符是 AND 然后使用

field:(value1 OR value2 OR value3)

【讨论】:

知道文档中的解释吗? 虽然这种方法有效,但并不准确。至少没有弹性。如果您有任何其他字段(在我的情况下为 _id)具有相同的值,它也会找到这些字段。即:/_search?q=(clientId:3966 OR 42952) 带来了这 2 个客户和另一个 _id=42952 @NicolasMarianoObregon 我不确定这种语法是否适用于 Elastic,但您在编写查询时打错了字。 clientId: 应该在括号之外。 关于在 Solr 上使用此排名而不是过滤的任何提示?【参考方案2】:

接受的答案对我无效,但以下格式有效:+(field:value1 OR field:value2 OR field:value3)

【讨论】:

以上是关于如何使用 Solr/Lucene 搜索值列表?的主要内容,如果未能解决你的问题,请参考以下文章

Apache Solr - Lucene - 邮政编码半径搜索

选择 solr/lucene 提交策略

Solr/Lucene 有没有办法返回所选文档的排名而不是完整结果?

Solr全文检索基本原理及评分机制

Solr 中与 DtSearch 选项对应的高级搜索选项

lucene vs solr 评分