Я сделал простое сопоставление с двумя полями, где я анализирую одно поле с типом текста, а другое поле с типом ключевого слова. Пример
fields: Category_one, Category_two
Data
{"Category_one": "liked wine", "Category_two":"Wine"}
{"Category_one": "liked pasta", "Category_two":"pasta"}
{"Category_one": "liked wine and pasta", "Category_two":"Wine and pasta"}
{"Category_one": "liked wine so much", "Category_two":"Wine"}
...........
..........
.....
Теперь я написал поисковый запрос для индекса.
Get _search/cat
{
"size": 20,
"query": {
"match": {
"Category_one.ngrams": {
"query": "Nice food place in XYZ location",
"analyzer": "standard"
}
}
}
}
}
Работает нормально. Я хочу найти топ-5 уникальных Category_two
значений в соответствии с их оценкой по запросу в Category_one
.
Например:
Допустим, запрос возвращает 20 результатов («размер» в запросе выше) с разными баллами, из которых первые 6 - это вино (Category_two
), следующие 4 - макароны (Category_two
) и т. Д. .
Эти 20 результатов имеют дубликаты. Как я могу получить 3 лучших уникальных значения из Category_two
для "Wine", "pasta", "wine and pasta" в соответствии с их оценками в Category_one
match match?
Может кто-нибудь помочь мне понять, как подойти к этой проблеме? Мы ценим любые предложения.
Спасибо.