【问题标题】:elasticsearch word proximityelasticsearch词邻近度
【发布时间】:2015-12-16 22:34:26
【问题描述】:

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

例子:

文档 1:

close words in documents detection

文档 2:

close words in detection documents

查询:

close documents

所以我希望第一个文档的分数更高,第二个文档的分数更低。

如果这些词紧挨着,我会使用带状疱疹和两三个词标记。但是,这种方法不考虑彼此接近的单词。

【问题讨论】:

    标签: search indexing elasticsearch shingles


    【解决方案1】:

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

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

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

    【讨论】:

    • 但请注意,当使用过高的斜率时,词序可能会发生变化(即the documents are close to me 也会匹配),从而影响评分。
    猜你喜欢
    • 2017-08-17
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 2016-09-17
    • 1970-01-01
    • 2016-10-14
    相关资源
    最近更新 更多