ElasticSearch-带有截止值的常见查询,仅当所有低频词都匹配时才对高频词进行评分

时间:2018-10-24 13:07:16

标签: elasticsearch

尝试使用“ https://www.elastic.co/guide/en/elasticsearch/reference/6.4/query-dsl-common-terms-query.html”,但无法使某件事起作用: 仅当查询中的所有低频词均已匹配时,才将高频词分数添加到总分数中。

使用"low_freq_operator": "and"进行了尝试,但这使得查询中的所有低频单词都是必需的-我不知道。

也-如果我使用

"minimum_should_match": {
    "low_freq" : "50%",
}

这是否意味着如果查询有4个低频词,那么其中的2个文档将作为匹配项返回,而只有1个查询词的文档将不会被返回?

谢谢。

1 个答案:

答案 0 :(得分:0)

对于Common Terms Query

低频词

  • 更重要
  • 您可以构造查询以返回包含查询字符串所有单词的文档
    • must be present (使用"low_freq_operator": "and"
    • only some of them (使用"low_freq_operator": "or"
    • some percentage of them (使用minimum_should_match

高频词

  • 不太重要。
  • 您可以构造对influence the score的查询,其中查询字符串中的所有停用词
    • must be considered (使用"high_freq_operator": "and"
    • only some of them (使用"high_freq_operator": "or"
    • some percentage of them (使用minimum_should_match
  • 仅影响相关性得分。
  • 如果不存在低频词,则其为查询字符串中所有术语的典型should子句

如何将单词分类为频率较低或频率较高

根据LINK

  

根据以下条件将术语分配给高频组或低频组   cutoff_frequency,可以指定为绝对频率   (> = 1)或相对频率(0.0 .. 1.0)....

     

此查询最有趣的属性可能是它可以适应   自动指定域停用词。例如,在视频上   托管网站,诸如“剪辑”或“视频”之类的常用术语将自动   充当停用词,而无需维护手册列表。

如何与示例一起使用

从此LINK

常用术语查询is a modern alternative to stopwords which improves the precision and recall of search results(通过考虑停用词),而不会降低性能。

假设我有以下文件:

Document 1: Is there stairway to this path?
Document 2: Is there a stairway to heaven?
Document 3: Stairway to heaven
..... 
.....

现在说您的搜索查询如下:

{
    "query": {
        "common": {
            "body": {
                "query": "stairway to heaven",
                "cutoff_frequency": 0.001,
                "low_freq_operator": "and"
            }
        }
    }
}

使用and时,结果仅为Document 3 followed by Document 2。而当您使用or时,结果将分别为Document 3, Document 2, Document 1

因此,当您使用or时,此处将使用高频词(即to)来影响得分。以类似的方式,high_freq_operator适用于停用词,但是它再次仅用于影响得分。

因此,对于您的第一个查询,希望上面的解释就足够了,对于下面的查询,

  

是否表示如果查询有4个低频词,则文档中有2个   其中的一个将作为匹配返回,但仅包含1个查询的文档   单词不会被返回对吗?

是的,这是正确的。

希望有帮助!