Я работаю над сумасшедшим требованием, сумасшедшим, потому что я никогда этого не делал, и, судя по всему, я не думаю, что это можно сделать напрямую. Нужна помощь на этой платформе, если кто-то может мне помочь.
Требование в Elasticsearch - если значение совпадает, тогда я должен предоставить оценку, но если поле присутствует, но не соответствует, то предоставить отрицательную оценку, которая при последнем суммировании уменьшит оценку. Пример, скажем, я ищу два поля имя и тему. Если имя соответствует, тогда указывается 50 баллов, если предмет соответствует, тогда 10 баллов. Таким образом, если оба совпадения, тогда оценка равна 60. Если предмет не соответствует, тогда оценка равна -10, что при добавлении дает мне 40.
Это легко с точки зрения некоторых языков программирования, но не удается сделать это в запросе Elasticsearch,Я использую функцию оценки, ниже пример запроса. Любая помощь в этом отношении приветствуется.
GET dummy_rps_index_2/_search
{
"query": {
"bool": {
"must": [
{
"dis_max": {
"queries": [
{
"function_score": {
"boost_mode": "replace",
"score_mode": "max",
"max_boost": 100,
"query": {
"bool": {
"disable_coord": true,
"minimum_should_match": 1,
"should": [
{
"function_score": {
"score_mode": "max",
"boost_mode": "replace",
"_name": "name_match",
"query": {
"multi_match": {
"query": "TIFFIN",
"fields": [
"name"
],
"operator": "or",
"fuzziness": "AUTO"
}
},
"functions": [
{
"filter": {
"multi_match": {
"query": "TIFFIN",
"fields": [
"name"
],
"operator": "or",
"fuzziness": 0
}
},
"weight": 50
}
]
}
},
{
"function_score": {
"score_mode": "max",
"boost_mode": "replace",
"_name": "multipleline_code",
"query": {
"bool": {
"disable_coord": true,
"minimum_should_match": 1,
"should": [
{
"function_score": {
"boost_mode": "replace",
"query": {
"multi_match": {
"query": "maths",
"fields": [
"subject
]
}
},
"functions": [
{
"weight": 10
}
]
}
}
]
}
}
}
}
]
}
}
}
}
]
}
}
]
}
}
}