这是我在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(四舍五入)而在另一个doc中出现次数相同的Javascript得分低于9.58
根据我的使用案例,无论一个单词的罕见程度或该字段的短/长程度如何,我希望相同的术语频率具有相同的分数。
我该怎么做?
答案 0 :(得分:2)
如果您真的希望第一个文档为str:php
评分3.0(在评分标准化之前),而第二个文档也为str:Javascript
评分3.0(在评分标准化之前),那么[你应该查看script_score
] [1]并使用[tf()
函数] [2]。
这将完全绕过(1)长度标准化,(2)任何对“稀有”(idf)的考虑,以及(3)(tf)的任何归一化