我想使用elasticsearch函数得分来定制评分,这些是我的排名优先级:
具有查询的常用术语的数量(例如,在查询中具有4个术语中的3个的文档应当排名高于在查询中具有4个术语中的2个的文档,无论每个术语的tf/idf得分是多少).在弹性文档中,它被称为协调因子.
术语相关性之和.(TF/IDF)
文件受欢迎程度(按受欢迎程度提升的每个文件的投票数)
这是目前使用的elasticsearch请求的主体:
body = {
"query": {
"function_score": {
"query": {
{'match': {'text': query}}
},
"functions": [
{
"field_value_factor": {
"field": "ducoumnet_popularity",
}
}
],
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是该请求不满足第一优先级.例如,可能存在文档A,其与查询的共同术语比文档B少,但由于其常用术语具有更多tf/idf分数,因此文档A的排名高于文档B.
为了防止这种情况,我认为最好的方法是通过协调因素提高文档得分.有没有办法做到这一点?与此请求类似的内容:
body = {
"query": {
"function_score": {
"query": {
{'match': {'text': query}}
},
"functions": [
{
"field_value_factor": {
"field": "ducoumnet_popularity",
},
"field_value_factor": {
"field": "_coordination"
"weight": 10
}
}
],
}
}
}
Run Code Online (Sandbox Code Playgroud)
我没有找到这个问题的确切答案,但它可能会帮助某人知道您可以使用 限制结果中文档的最小精度 minimum_should_match。
{
"query": {
"match": {
"content": {
"query": "quick brown dog",
"minimum_should_match": 75%
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
它接受许多不同的配置。更多解释: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-minimum-should-match.html
| 归档时间: |
|
| 查看次数: |
759 次 |
| 最近记录: |