【问题标题】:Solr multiple word searchSolr 多词搜索
【发布时间】:2015-11-02 05:32:32
【问题描述】:

我想知道如何通过在搜索中添加多个单词来搜索行。

即文本是

The quick brown fox jumps over the lazy dog

我要搜索

quick dog

这样我就可以在结果中得到这一行

如果我搜索

快速的大象

我仍然应该在结果中得到这一行。

The quick brown fox jumps over the lazy dog
The lazy brown fox jumps over the lazy dog

如果我搜索棕色,我应该在结果中得到两行 如果我搜索快速棕色,我应该只得到第一行

这可以通过 solr 实现吗?

【问题讨论】:

  • @Pankaj,您对此进行了多长时间的研究……?您是否定义了架构文件和索引示例文档并进行了验证?如果不使用标准安装并索引一些数据并验证,请为您的数据使用文本类型

标签: search solr


【解决方案1】:

您可以使用 edismax 查询解析器(以及 dismax 查询解析器)中的 mm 参数来调整 Solr 匹配多个术语的方式。在第二个示例中(应排除第二行),mm 参数允许您准确调整需要匹配多少字词才能使文档被视为对搜索有效。

在第二个示例中,第二行的得分将低于第一行,但您无法排除它。

【讨论】:

  • 谢谢垫子。现在我明白了,即使谷歌也不会显示这样的结果。现在我专注于首先显示最大匹配结果。 “在第二个示例中,第二行的得分将低于第一行,但您无法排除它。”所以现在如果我想搜索 Audi A5 我想首先显示两个单词的结果,然后只显示 audi 或 a5
  • @PankajS 这将是 Solr 的默认行为,因为更多匹配项的得分将高于单个匹配项。除非您按其他标准排序。使用 debugQuery 查看各个子句如何影响您的查询结果。
【解决方案2】:

亲爱的,您可以在要在单个文档中搜索的两个工作之间使用 AND 运算符 (&&)。 喜欢:"quick" AND "brown" 会给你一个第一个文件。 AND 运算符匹配两个词都存在于单个文档文本中的任何位置的文档

也更喜欢使用 + 号来表示文档中的单词强制。

+棕色+快

“+”或必需的运算符要求“+”符号后面的词存在于单个文档的字段中。

参考:https://lucene.apache.org/core/2_9_4/queryparsersyntax.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 2014-02-04
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多