Elasticsearch 词序
Elasticsearch word order
我使用标准分析器为文档编制了索引
foo 1 bar
foo 2 bar
foo 3 bar
等等..
当我进行类似“asdf foo 1 bar 2”的 mach 查询时,foo 2 bar 的得分高于 foo 1 bar 尽管查询字符串包含短语 "foo 1 bar"
如何构建我的查询以使其考虑词序?主要问题是查询字符串可能包含比文档更多的单词。
您应该考虑使用 "shingles"。它们就像迷你短语,通过将相邻的术语分组成对来帮助提高相关性。然后,如果您获得多个带状匹配项,那么与另一个只有单个单词匹配项的文档相比,您的相关性会提高。
文档 1 的原件
"foo 1 bar"
文档 1 的带状疱疹
"foo 1", "1 bar"
因此对于查询 asdf foo 1 bar 2
,您将在查询的那些部分的 foo 1
和 1 bar
上获得匹配,这将增加第一个文档的相关性在第二个。
在 Elasticsearch Docs 中了解有关带状疱疹的更多信息。
您可能应该为此字段创建多个字段映射,以便获得带状疱疹以及标准文本分析的好处。该过程在文档中也有详细记录,如果您遇到困难,可以在此处创建另一个问题。
我使用标准分析器为文档编制了索引
foo 1 bar
foo 2 bar
foo 3 bar
等等..
当我进行类似“asdf foo 1 bar 2”的 mach 查询时,foo 2 bar 的得分高于 foo 1 bar 尽管查询字符串包含短语 "foo 1 bar"
如何构建我的查询以使其考虑词序?主要问题是查询字符串可能包含比文档更多的单词。
您应该考虑使用 "shingles"。它们就像迷你短语,通过将相邻的术语分组成对来帮助提高相关性。然后,如果您获得多个带状匹配项,那么与另一个只有单个单词匹配项的文档相比,您的相关性会提高。
文档 1 的原件
"foo 1 bar"
文档 1 的带状疱疹
"foo 1", "1 bar"
因此对于查询 asdf foo 1 bar 2
,您将在查询的那些部分的 foo 1
和 1 bar
上获得匹配,这将增加第一个文档的相关性在第二个。
在 Elasticsearch Docs 中了解有关带状疱疹的更多信息。
您可能应该为此字段创建多个字段映射,以便获得带状疱疹以及标准文本分析的好处。该过程在文档中也有详细记录,如果您遇到困难,可以在此处创建另一个问题。