tl; dr: хотите ранжировать агрегаты в зависимости от того, использовал ли ключ корзины один из поисковых терминов.
У меня есть два документа с индексами и рекомендации со следующими сопоставлениями:
Документы:
{
"id": string,
"document_text" : string,
"author" : { "name": string }
...other fields
}
Рекомендации:
{
"id": string,
"recommendation_text" : string,
"author" : { "name": string }
...other fields
}
Проблема, которую я решаю, состоит в том, чтобы найти лучших авторов для терминов запроса.
Это прекрасно работает с multimatch
для одного термина запроса, такого как:
{
"size": 0,
"query": {
"multi_match": {
"query": "science",
"fields": [
"document_text",
"recommendation_text"
],
"type": "phrase",
}
},
"aggs": {
"search-authors": {
"terms": {
"field": "author.name.keyword",
"size": 50
},
"aggs": {
"top-docs": {
"top_hits": {
"size": 100
}
}
}
}
}
}
Но когда у меня несколько ключевых слов, скажем, zoology, botany
, я хочу, чтобы рейтинг агрегации поместил авторов, которые говорили о зоологии и ботанике, выше, чем у тех, кто использовал любое из них.
имеямножественное multi_match с bool не помогает, так как это не совсем и / или ситуация.