Я использую ES 7.3.У меня есть индекс продукта с названиями, деталями, номерами моделей и т. Д. У меня возникают проблемы с заполнением ключевыми словами, поскольку некоторые продукты могут содержать одно и то же слово, часть или номер модели несколько раз по всему документу.
ДляНапример, номер модели может присутствовать дважды в заголовке, а также в поле номера модели.Некоторые продукты могут включать номер модели только в название, а не в поля номера модели.Эти продукты имеют трудности с ранжированием из-за проблемы.Как я могу предотвратить этот тип заполнения ключевых слов?Вот мой код.
Поля:
fields = [
'name^10','name.ngram',
'part_number^10',
'mod_name^5',
'model_number^5',
'brand^10',
'category^5',
'product_type^5',
'search_variations^1'
]
fuzzy_fields = [
'name',
'part_number',
'mod_name',
'model_number',
'brand',
'category',
'product_type',
'search_variations'
]
Запрос:
{
explain: true,
query:{
function_score: {
"query": {
"bool": {
"should":
[{
multi_match:{
fields: fields,
type: "most_fields",
query: "#{query}"
}
},
{
multi_match:{
fields: fuzzy_fields,
type: "most_fields",
fuzziness: "AUTO",
query: "#{query}"
}
}],
"filter": {
"bool": {
"must": filters
}
}
}
},field_value_factor:{
field: "popularity",
modifier: "log1p",
factor: 5
},
boost_mode: "sum"
}
},highlight: {
fields: {
:"*" => {}
}
},
aggs: {categories: { terms: { field: "category.raw"} }}
}
ОБНОВЛЕНИЕ
Добавление фильтра unique
к моему отображению делаетпредотвратить дублирование значений, совпадающих в одном поле, но не в нескольких полях, что мне и нужно.