Можно ли как-то настроить анализатор, чтобы при запросе сначала были предложения по окончанию слова, после проблема и ввода второго слова уже предложения по словосочетаниям.
Спасибо!
Можно ли как-то настроить анализатор, чтобы при запросе сначала были предложения по окончанию слова, после проблема и ввода второго слова уже предложения по словосочетаниям.
Спасибо!
А можно примеры 1) записей в индексе, 2) запросов и 3) желаемых результатов ?
Сейчас анализатор выглядит таким образом
analyzer:
autocomplete_analyzer:
type: custom
tokenizer: lowercase
filter: [asciifolding, name_ngram]
phrase:
type: custom
tokenizer: standard
filter: [word_delimeter_filter, synonym_filter, lowercase, shingle]
name_analyzer:
type: custom
tokenizer: standard
char_filter: [html_strip]
filter: [word_delimeter_filter, synonym_filter, lowercase]
filter:
name_ngram:
type: ngram
min_gram: 3
max_gram: 5
ngram:
type: ngram
min_gram: 1
max_gram: 20
shingle:
type: shingle
min_shingle_size: 2
max_shingle_size: 3
synonym_filter:
type: synonym_graph
synonyms:
[
"кр, красный, красное",
"бел, белое",
"сух, сухое",
"п/сл, п/сладкое, полу-сладкое",
"сах, сахар, ампулы",
"стол, столовое",
"сл, сладкое",
"шт, штук, ном, номер",
"об, объем",
"л, литр",
]
word_delimeter_filter:
type: word_delimiter
type_table:
[
". => DIGIT",
"- => ALPHANUM",
"; => SUBWORD_DELIM",
" => SUBWORD_DELIM",
]
А это маппинг
properties:
id:
type: integer
name:
type: text
analyzer: phrase
description:
type: text
article:
type: text
photos:
type: object
properties:
path: ~
country:
type: object
properties:
flag:
type: ~
value:
type: ~
alc:
type: float
offers:
type: object
properties:
price: ~
shop:
type: object
properties:
id:
type: integer
Ищем с помощью
{
"query": {
"match" : {
"name" : {
"query":"пиво",
"fuzziness": 3
}
}
}
}
В итоге получаем сначала ответы которые содержат "пино", но самая большая проблема которую хотелось бы решить. Сейчас при вводе слова мы получаем объекты товаров, а хотелось бы получать предложения по словам или словосочетаниям.
Например вводим. Вин, а получаем вино, вина, вино красное, вино белое и тд.
Тогда вам надо на suggesters смотреть.
Спасибо за ответ. suggesters пробовал, но не удалось настроить, чтобы рекомендовало больше одного слова. Например я вводил "вен" и оно предлагало варианты "вин", "вино", "вина" и тд. Но если я вводил "вино сух", то ответ был пустой.
У меня будет еще один вопрос, как можно получить самые популярные запросы?
А вы какой тип suggesters пробовали?
Если в completion suggesters - то weight или context, если в обычном поиске, то function score
This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
© 2020. All Rights Reserved - Elasticsearch
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant logo are trademarks of the Apache Software Foundation in the United States and/or other countries.