Добрый день!
Подскажите, пожалуйста, как правильно подключать синонимы, которые должны заменяться на несколько терминов?
Мы подключили к индексу стоп-слова (среди которых есть предлог "для"), морфологию, и хотим, чтобы следующие фразы были взаимозаменяемы, поэтому добавили синонимы таким образом:
- для женщин, женский => для женщин, женский
- для автомобиля, для авто, автомобильный => для автомобиля, для авто, автомобильный
Предполагалось, что если мы вводим поисковый запрос " женский рюкзак" он должен заменяться на "(женский|для женщин) рюкзак", а по факту происходит поиск "(женский|для) (рюкзак|женщин)", потому Эластик разбивает термин "женский" на такие токены:
"tokens": [
{
"token": "женский",
"start_offset": 0,
"end_offset": 7,
"type": "SYNONYM",
"position": 0
},
{
"token": "женщина",
"start_offset": 0,
"end_offset": 7,
"type": "SYNONYM",
"position": 1
}
]
}
Т.е. второй синоним "женщина" подключается для термина с индексом [1] в запросе, что неправильно. Аналогичная ситуация с запросами "автомобильный фильтр" или "женский компьютер" - из-за подобной работы синонимов в индексах находится много лишних документов.
Подскажите, можно ли настроить синонимы так, чтобы они подмешивались в запрос корректно?
Хотелось бы, чтобы по запросам типа:
"фильтр для автомобиля"
"фильтр для авто"
"фильтр автомобильный"
"автомобильный фильтр"
и т.д.
находились одни и те же документы в индексе.