【问题标题】:Elasticsearch word order弹性搜索词序
【发布时间】:2019-06-04 10:58:20
【问题描述】:

我已使用标准分析器为文档编制索引

foo 1 bar
foo 2 bar
foo 3 bar

等等……

当我进行像“asdf foo 1 bar 2”这样的马赫查询时,foo 2 bar 的得分高于 foo 1 bar,尽管查询字符串包含短语“foo 1 bar”

如何构建我的查询以考虑词序?主要问题是查询字符串可能包含比文档更多的单词。

【问题讨论】:

    标签: elasticsearch elasticsearch-6


    【解决方案1】:

    您应该考虑使用“带状疱疹”。它们就像迷你短语,通过将相邻术语组合成对来帮助提高相关性。然后,如果您获得多个 shingle 匹配,则与另一个仅具有单个单词匹配的文档相比,这会提高您的相关性。

    文档 1 的原件

    "foo 1 bar"
    

    文档 1 的带状疱疹

    "foo 1", "1 bar"
    

    因此,对于查询 asdf foo 1 bar 2,您将在 shingle foo 11 bar 上获得与查询的这些部分匹配的内容,这将增加第一个文档相对于第二个文档的相关性。

    Elasticsearch Docs了解更多关于带状疱疹的信息。

    您可能应该为此字段创建多个字段映射,以便获得 shingles 以及标准文本分析的好处。该过程在文档中也有详细记录,如果遇到困难,您可以在此处创建另一个问题。

    【讨论】:

      猜你喜欢
      • 2012-07-11
      • 2021-02-19
      • 2019-06-15
      • 1970-01-01
      • 2014-11-18
      • 2018-01-12
      • 1970-01-01
      • 1970-01-01
      • 2019-01-26
      相关资源
      最近更新 更多