Elasticsearch:完全禁用 IDF 以进行搜索结果评分
Elasticsearch : Disable IDF completely for search result scoring
这是我在 elasticsearch 中的示例数据
{
"_index": "12_index",
"_type": "skill_strings",
"_id": "AVKv-kM4axmY3fECZw9T",
"_source": {
"str": "PHP PHP PHP"
}
},
{
"_index": "12_index",
"_type": "skill_strings",
"_id": "AVKv-kNfaxmY3fECZw9U",
"_source": {
"str": "Javascript PHP Javascript Javascript"
}
}
"bool":{
"must":[
// some conditions
{"match_phrase":{"str":"php"}}
],
"should":[
{"match_phrase":{"sentences":"Javascript"}}
]
}
规范被禁用
在结果集中,php(出现 16 次)得分为 13.65(四舍五入),而在另一个文档中出现相同次数的 Javascript 得分较低,为 9.58
根据我的用例,无论一个词有多稀有或short/long 领域如何,我都希望相同的词频得到相同的分数。
我该怎么做?
这里有两种可能的方法:
1) 自定义相似度配置。请参阅此处的示例,了解这是如何实现的:
https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-similarity.html#scripted_similarity
2) 创建脚本引擎:
https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting-engine.html
在大多数情况下,(1) 应该是最简单的。
这是我在 elasticsearch 中的示例数据
{
"_index": "12_index",
"_type": "skill_strings",
"_id": "AVKv-kM4axmY3fECZw9T",
"_source": {
"str": "PHP PHP PHP"
}
},
{
"_index": "12_index",
"_type": "skill_strings",
"_id": "AVKv-kNfaxmY3fECZw9U",
"_source": {
"str": "Javascript PHP Javascript Javascript"
}
}
"bool":{
"must":[
// some conditions
{"match_phrase":{"str":"php"}}
],
"should":[
{"match_phrase":{"sentences":"Javascript"}}
]
}
规范被禁用
在结果集中,php(出现 16 次)得分为 13.65(四舍五入),而在另一个文档中出现相同次数的 Javascript 得分较低,为 9.58
根据我的用例,无论一个词有多稀有或short/long 领域如何,我都希望相同的词频得到相同的分数。
我该怎么做?
这里有两种可能的方法:
1) 自定义相似度配置。请参阅此处的示例,了解这是如何实现的: https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-similarity.html#scripted_similarity
2) 创建脚本引擎:
https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-scripting-engine.html
在大多数情况下,(1) 应该是最简单的。