弹性搜索词接近

时间:2015-12-16 22:34:26

标签: search indexing elasticsearch shingles

在elasticsearch中有没有办法提高文档中查询词彼此接近的文档的分数?它不仅仅是关于在一起的单词,因为这可以通过使用带状疱疹来解决,而是关于那些可能存在另一个不重要的单词的邻近单词。

示例:

文件1:

close words in documents detection

文件2:

close words in detection documents

查询:

close documents

所以我希望第一份文件得分更高,第二份文件得分更低。

如果这些单词紧挨着,我会使用带状疱疹和两三个单词代币。然而,这种方法并不能解释彼此接近的词语。

1 个答案:

答案 0 :(得分:1)

以下查询是elastic docos中修改后的形式,应符合要求。它使用ElasticSearch中的邻近特征称为"匹配短语"。

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

上面的slop参数控制了术语的接近程度,以使文档完全匹配。从技术上讲,这是必须完成的移动次数,因此在查询中使用更多单词会变得更复杂,但是使用两个术语可以简化距离。除此之外,他们应该更接近,这是我们想要的更接近。