Да, вы можете использовать синонимы, а также нечеткость для предложений.Синонимы обрабатываются путем добавления фильтра синонимов в ваш анализатор языков и добавления этого фильтра в анализатор.Затем, когда вы создаете отображение полей для полей, которые вы хотите использовать для предложений, вы назначаете этот анализатор этому полю.
Что касается нечеткости, которая происходит во время запроса.Большинство текстовых запросов поддерживают параметр fuzziness
, который позволяет указать, сколько исправлений вы хотите разрешить.Значение по умолчанию auto
регулирует количество исправлений в зависимости от того, какой длительный срок, поэтому обычно это лучше.
Настройка условного анализа ( ссылка на синоним_графа )
{
"analysis": {
"filter": {
"synonyms": {
"type": "synonym_graph",
"expand": "false",
"synonyms": [
"ar => audio record"
]
}
},
"analyzer": {
"synonyms": {
"tokenizer": "standard",
"type": "custom",
"filter": [
"standard",
"lowercase",
"synonyms"
]
}
}
}
}
Условное отображение поля ( Анализатор + ссылка на отображение )
(Обратите внимание, что анализатор соответствует имени анализатораопределено выше)
{
"properties": {
"suggestion": {
"type": "text",
"analyzer": "synonyms"
}
}
}
Условный запрос
{
"query": {
"match": {
"suggestion": {
"query": "replce ar",
"fuzziness": "auto",
"operator": "and"
}
}
}
}
Имейте в виду, что существует несколько различных вариантов предложений ,поэтому в зависимости от того, какую опцию вы используете, вам может потребоваться настроить способ отображения поля или даже добавить другой анализатор токенов в анализатор.Но анализаторы просто состоят из серии токен-фильтров, поэтому вы можете обычно комбинировать любые токен-фильтры, которые вам нужны для достижения вашей цели.Просто убедитесь, что вы понимаете, что делает каждый фильтр, и вы получите фильтры в правильном порядке.
Если вы застряли в какой-то части этого процесса, просто задайте другой вопрос с конкретной проблемой, с которой вы столкнулись.Удачи!