我已经使用标准分析仪为文档建立了索引
foo 1 bar
foo 2 bar
foo 3 bar
以此类推。
当我进行类似“ asdf foo 1 bar 2 ”的马赫查询时,尽管 foo 2 bar 的得分高于 foo 1 bar 查询字符串包含短语“ foo 1 bar”
如何构造查询,以便将字序考虑在内?主要问题是查询字符串可能比文档包含更多的单词。
答案 0 :(得分:2)
您应该考虑使用“带状疱疹”。它们就像微型短语,可以通过将成对的相邻术语组合在一起来帮助提高相关性。然后,如果您获得多个带状匹配,则可以提高与仅具有单个单词匹配的另一个文档的相关性。
文档1的原始版本
"foo 1 bar"
文档1的标题
"foo 1", "1 bar"
因此,对于查询asdf foo 1 bar 2
,您将在查询的那些部分上分别在foo 1
和1 bar
上获得匹配项,这将增加第一个文档与第二。
在Elasticsearch Docs中了解有关带状疱疹的更多信息。
您可能应该为此字段创建多个字段映射,以便获得带状疱疹以及标准文本分析的好处。该过程在文档中也有详细记录,如果遇到问题,可以在此处创建另一个问题。