Появилась такая идея и соответственно задача, есть сервис в котором пользователи оставляют тикеты и есть так же FAQ в котором большинство вопросов уже описаны. Решил сделать живой поиск на поле текста сообщения тикета, чтобы при наборе слов она искала в FAQ ответы. Прошу вашего совета, какие есть решения или что можно взять в основу. В основе — nodejs.
Требования:
— Возможность проверки каждого слова, а не предложений или словосочетаний;
— Исключение из проверки всех «а», «не», «в» и т.п.;
— Морфологическое склонение искомых слов, проверка на все варианты;
— Автоматическое составление базы поиска из выбранного текста, возможность переиндексации с добавлением нового;
— Быстрая работа, могу погрузить всю базу в оперативу при необходимости, если будет такая функция в каком-то решении, то вообще хорошо
— Желательна реализация для Mongodb или Redis
Раньше никогда поисковые системы замудрённые не приходилось делать, опыта в этом нет
Всё таки придумал как сделать это всё проще. В FAQ не так много вопросов, все их можно классифицировать на категории проблем и сделать многоуровневое выпадающее меню + пункт другое. Так при выборе уже существующей проблемы будет выдаваться подсказка из FAQ и возможность написать примечание для данного вида проблемы, если ответ из FAQ не подошёл. Вроде простое и красивое решение сложной проблемы и не займёт много времени на реализацию. А с морфологическим поиском буду разбираться не в реальных проектах, а для себя.
По моему опыту классификацию больше двух уровней делать бесполезно.
Больше семи пунктов на каждом уровне ставить тоже нельзя (а лучше — пяти).
Причина — люди классифицируют различными способами. Даже один человек в разное время помещает одинаковую информацию в разные рубрики.
Соответственно и эффективность поиска по рубрикатору резко падает с увеличением возможности выбора.