[英]How to score based on frequency in elasticsearch
我正在將Elasticsearch與用戶數據庫一起使用。 每個用戶有多個職位,每個職位都有職業編號。 我正在使用以下查詢來查找具有特定職位的用戶:
"explain": true,
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"term": {
"positions.career.id": {
"value": 31
}
}
}
]
}
}
],
"minimum_number_should_match": 1
}
}
但是,此查詢為所有結果賦予1分,表示他們至少在一個職位上擁有該職業。
我需要分數來反映用戶的職位數量。
使用Elasticsearch有什么辦法做到這一點?
您可以使用elasticsearch的高級評分模塊來訪問索引級別的評分屬性,以根據詞頻對文檔進行評分。
官方文件 。
您可以在功能分數腳本分數查詢中使用它,以根據Elasticsearch中的頻率進行分數
對於ES 2.4.1和默認腳本語言groovy
POST index_name1/test_type
{
"title" : "harley harley harley",
"nested_one" : [{
"some_id" : 78
},
{
"some_id" : 80
},{
"some_id" : 100
}],
"nested_two" : [{
"some_id" : 79
},
{
"some_id" : 80
},{
"some_id" : 101
}]
}
POST index_name1/test_type
{
"title" : "harley harley",
"nested_one" : [{
"some_id" : 78
},
{
"some_id" : 80
},{
"some_id" : 100
}],
"nested_two" : [{
"some_id" : 79
},
{
"some_id" : 80
},{
"some_id" : 101
}]
}
POST index_name1/_search
{
"query": {"function_score": {
"query": {"match_all": {}},
"functions": [
{"script_score": {
"script": "_index['title']['harley'].tf()"
}}
]
}}
}
以下是上述查詢的響應。
{
"took": 173,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 3,
"max_score": 3,
"hits": [
{
"_index": "index_name1",
"_type": "test_type",
"_id": "AVn9aDOUKkYhaW9Iz5wL",
"_score": 3,
"_source": {
"title": "harley harley harley",
"nested_one": [
{
"some_id": 78
},
{
"some_id": 80
},
{
"some_id": 100
}
],
"nested_two": [
{
"some_id": 79
},
{
"some_id": 80
},
{
"some_id": 101
}
]
}
},
{
"_index": "index_name1",
"_type": "test_type",
"_id": "AVn9aBQGKkYhaW9Iz5wJ",
"_score": 2,
"_source": {
"title": "harley harley",
"nested_one": [
{
"some_id": 78
},
{
"some_id": 80
},
{
"some_id": 100
}
],
"nested_two": [
{
"some_id": 79
},
{
"some_id": 80
},
{
"some_id": 101
}
]
}
},
{
"_index": "index_name1",
"_type": "test_type",
"_id": "AVn9aBhlKkYhaW9Iz5wK",
"_score": 2,
"_source": {
"title": "harley harley",
"nested_one": [
{
"some_id": 78
},
{
"some_id": 80
},
{
"some_id": 100
}
],
"nested_two": [
{
"some_id": 79
},
{
"some_id": 80
},
{
"some_id": 101
}
]
}
}
]
}
}
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.