0

在弹性搜索中,有没有办法增加文档中查询词彼此接近的文档的分数?这不仅是关于单词在一起的问题,因为这可以通过使用 shingles 来解决,而且关于在其间可能存在另一个不重要单词的邻近单词。

例子:

文件1:

close words in documents detection

文件 2:

close words in detection documents

询问:

close documents

所以我想为第一个文档获得更高的分数,而为第二个文档获得更低的分数。

如果这些词紧挨着,我会使用带状疱疹和两三个词标记。然而,这种方法并没有考虑到彼此接近的单词。

4

1 回答 1

1

以下查询是弹性文档中的修改形式,应该满足要求。它使用 ElasticSearch 中称为“匹配短语”的邻近特性。

POST /my_index/my_type/_search
{
   "query": {
      "match_phrase": {
         "text": {
            "query": "close documents",
            "slop":  50 
         }
      }
   }
}

上面的 slop 参数控制术语必须有多接近才能使文档被视为完全匹配。从技术上讲,这是必须完成的移动次数,因此查询中的单词越多,它就越复杂,但使用两个术语,它会简化为距离。除此之外,它们应该在更接近的情况下排名更高,这正是我们想要的。

于 2015-12-16T23:00:13.110 回答