#713: Не ищутся статьи по неполному слову и с определенными окончаниями
Отредактирована: 307 дней назадВопрос
- По тексту вроде сходится "устранение" - есть "устранена", проблема в форме слова?
- Если ввести неполное слово, например без окончания, выборка будет пуста.
- При этом с одним неполным словом ("резервн") удалось получить выборку.
- Поиск строго завязан на склонении.
Ответ
Для поиска в KCS виджете мы используем 3rd-party полнотекстовый PostgreSQL движок. Одна из его особенностей заключается в том, что слова приводятся к базовой форме (то есть выполняется лемматизация): "дома" - "дом"
Лемматизация происходит по подключенным языковым словарям.
В связи с этим, не поддерживается поиск по частям слов. Это объясняет, почему по "резервн" выдается 0 результатов, а так же почему не ищется "Настройка Bin" (bin и резервн неполные слова, которые не ищут в словарях).
Такая же ситуация будет, когда ищутся, например, какие-то команды и они записаны неполностью. В таких случаях лучше использовать кавычки, тогда статья находится:
Что касается разного количества выдаваемых результатов при поисках, то есть несколько возможных причин:
Лемматизация работает по-разному, т.е.форма слова может быть по-разному интерпретирована, например, единственное и множественное число (резервнУЮ и резервнЫЕ).
Отсутствие слова в словаре, т.е. PostgreSQL не распознаёт все формы.
Во втором случае, когда не находится слово в словаре, оно ищет вхождения as is, то есть только статьи с окончанием "резервнУЮ".
Судя по тестам, в данном случае это как раз является причиной, слово отсутствует в словаре: результаты поиска "резервная", "резервный", "резервные" и "резервную" - они все разные.При поиске используется метод, который НЕ работает с логическими операторами и префиксным поиском.
В общем случае, движок предлагает разные способа поиска, используемый в Swarmica похож на обычный пользовательский поиск, что коррелирует с принципом KCS описывать проблему словами клиента.
Альтернатива
На тарифе Премиум доступен также нейропоиск с помощью ИИ. Этот поиск уже может учитывать большие фразы и куски текста, подставлять синонимы, склонения, различные окончания, суммаризировать текст и т.д.