Почему точная фраза может не найти нужную инструкцию? На примере базы знаний объясняем обработку слов, роль словарей и границы полнотекстового поиска PostgreSQL.
Нужная инструкция есть, но поиск её не показывает
Представим условную базу знаний магазина. Сотрудник ищет информацию о возврате, а документ озаглавлен иначе и использует другую форму того же слова. Буквальное совпадение выбранного фрагмента может не сработать. Пользователю приходится угадывать формулировку автора вместо того, чтобы выбирать подходящую инструкцию по теме.
Полнотекстовый поиск помогает находить документы по содержащимся в них словам с заранее заданной обработкой текста. Рассмотрим встроенный механизм PostgreSQL — системы управления базами данных. Он отличается от простого поиска последовательности букв, однако не означает автоматического понимания любого вопроса так, как его понял бы человек.
Что происходит со словами до поиска
Документация PostgreSQL описывает предварительный разбор текста на фрагменты и их преобразование в лексемы. Лексема здесь — нормализованное представление слова для поиска. В зависимости от настроек разные формы могут приводиться к общему представлению. Это позволяет искать варианты без ручного перечисления каждого окончания.
Представьте бумажный тематический указатель: записи о разных формах одного слова отсылают к общей рубрике. Это аналогия, а не точная схема языка. В программе результат зависит от выбранного словаря и конфигурации. Нельзя обещать, что любое русское слово, фамилия или смешанное название продукта будут обработаны именно так, как ожидает читатель.
Почему некоторые слова пропускают
Словари PostgreSQL могут исключать стоп-слова — очень распространённые слова, слабо помогающие различать документы. Они также задают нормализацию. При необходимости используются специально подготовленные словари синонимов. Это явные правила обработки, а не самостоятельное открытие системой всех возможных смысловых связей.
Для условной базы знаний предложим проверить короткие и длинные вопросы отдельно. Если сотрудник вводит только общие служебные слова, после обработки полезных признаков может почти не остаться. Но механически удалять всё частое тоже опасно: важность слов определяется предметной областью. Поиск нужно оценивать на реальных формулировках будущих пользователей, сохраняя обезличенные примеры.
Чем это отличается от совпадения букв
Для сравнения возьмём вымышленный номер документа. Если сотруднику известен точный фрагмент номера, буквальный поиск может быть понятнее: окончания слов здесь вообще ни при чём. А при поиске инструкции по нескольким обычным словам полезна их обработка. Это разные задачи, и один способ не обязан полностью заменить другой.
Предлагаемый учебный набор: короткое название, длинная инструкция и документ с похожей, но другой темой. Для каждого сформулируйте ожидаемый ответ и причину выбора. Если поиск нашёл много совпадений, проверьте, помогает ли порядок результатов выбрать нужное. Сам факт появления документа в выдаче ещё не подтверждает удобство всей системы.
Релевантность не равна истинности
Результаты можно ранжировать — располагать по вычисленной степени соответствия вопросу. PostgreSQL учитывает обработанные слова и, в подходящих представлениях, сведения об их положении. Но высокий ранг не удостоверяет актуальность инструкции, полномочия автора или правильность совета. Эти свойства должны поддерживаться самой базой знаний и редакционными правилами.
Поиск по словам также не стоит называть универсальным семантическим ИИ. Незнакомая перифраза может не совпасть с нужными признаками документа. В учебном проекте полезно отдельно записывать пропуски, лишние совпадения и неоднозначные вопросы. Затем обсуждать, требуется ли изменить текст, словарь, фильтры или само ожидание пользователя, вместо обещания найти всё одной настройкой.
С чего начать изучение
Первый шаг — сформулировать несколько проверяемых вопросов и ожидаемые документы. О работе с данными в целом рассказывает введение в SQL. А назначение вспомогательного указателя раскрывает статья об индексах: ускорение поиска и качество его смысловых правил связаны, но не тождественны.
Изучать таблицы и способы получать из них нужные сведения можно на курсе SQL инженер. Начните с объяснения разницы между «этот фрагмент букв встречается» и «этот документ соответствует обработанным словам вопроса». Это поможет точнее обсуждать требования к поиску.


