Может быть несколько подходов с различной сложностью реализации.
Самый простой - создать список тем (например, сантехника), прикрепить пакет слов (например, "труба"), определить запрос на поиск по большинству ключевых слов.и выполнять поиск только в указанной теме (вы можете добавить поле topic
к своим документам эластичного поиска и установить его как обязательное с помощью +
во время поиска).
Конечно, если у вас много документов, ручное создание списка тем и пакета слов очень дорого.Вы можете использовать машинное обучение для автоматизации некоторых задач.По сути, достаточно иметь меру расстояния между словами и / или документами, чтобы автоматически находить темы (например, кластеризация данных ) и классифицировать запрос к одной из этих тем.Сочетание этих методов также может быть хорошим выбором (например, вы можете вручную создавать темы и присваивать им исходные документы, но использовать классификацию для назначения запросов).Взгляните на статью Википедии о скрытом семантическом анализе , чтобы лучше понять идею.Также обратите внимание на 2 связанные статьи по кластеризации данных и классификации документов .И да, Maui Indexer может стать хорошим помощником таким образом.
Наконец, вы можете попытаться создать движок, который «понимает» значение фразы (а не только использует частоту терминов) и ищет соответствующие темы.Скорее всего, это будет включать обработку естественного языка и базы знаний, основанные на онтологии .Но на самом деле, эта область все еще находится в активном исследовании, и без предыдущего опыта вам будет очень трудно реализовать нечто подобное.