根据找到的唯一关键字提升相关性得分

时间:2016-10-04 15:00:52

标签: elasticsearch elasticsearch-plugin

我处在一个场景中,如果它有一个唯一的关键字,我需要在Index中提供更多相关性。让我提供一个场景。 假设我需要搜索 znkdref不成功一词,因此结果将包含 znkdref 不成功 znkdref不成功<的内容< / strong>但是在这里我希望 znkdref不成功的内容具有最高的相关性,然后 znkdref 的内容应该具有较少的相关性,然后内容不成功应该具有最少的相关性。

有没有办法实现这个?我很乐意得到任何帮助

2 个答案:

答案 0 :(得分:0)

您想使用Query Time Boosting,特别是Prioritized Clauses

简而言之,您需要提取您想要提升的关键字,并构建一个查询来增强您想要的部分。

{
"query": {
    "bool": {
        "should": [{
            "match": {  
                "content": {
                    "query":    "znkdref",
                    "boost":    2
                }
            }
        },
        {
        "match": {  
                "content": {
                    "query":    "unsuccessfull"               
                }
            }
        }]
    }
}
}

根据评论进行更新:

如果您想知道文档为什么得到它所做的分数(可能标识“关键字”),那么您可以将“explain”作为查询参数传递或将其设置在根POST有效负载中。结果现在将具有文档频率计数和子分数。

答案 1 :(得分:0)

你是说&#34; znkdref&#34;是一个独特的关键字?例如,&#34; znkdref&#34;是一个特殊的名称。如果是的话。

  • 当然,文档匹配整个查询字符串&#34; znkdref failedfulfull&#34;一般来说,相关性得分最高。
  • 这些文件包含&#34; znkdref&#34;通常会有比文件中包含的更高的相关性分数&#34;不成功&#34;。因为TF.IDF得分为&#34; znkdref&#34;大于TF.IDF得分&#34;不成功&#34;。

相关性得分函数在https://www.elastic.co/guide/en/elasticsearch/guide/current/practical-scoring-function.html

中描述

我希望我的回答对你有所帮助。