В текстовом поиске полнотекстовый поиск относится к методам поиска в одном документе, хранящемся на компьютере , или в коллекции в полнотекстовой базе данных . Полнотекстовый поиск отличается от поиска, основанного на метаданных или на частях исходных текстов, представленных в базах данных (таких как заголовки, аннотации, выбранные разделы или библиографические ссылки).
При полнотекстовом поиске поисковая система проверяет все слова в каждом сохраненном документе, пытаясь сопоставить его с критериями поиска (например, текст, указанный пользователем). Методы полнотекстового поиска появились в 1960-х годах, например, IBM STAIRS с 1969 года, и стали распространены в онлайн -библиографических базах данных в 1990-х годах. [ требуется проверка ] Многие веб-сайты и прикладные программы (например, программное обеспечение для обработки текстов ) предоставляют возможности полнотекстового поиска. Некоторые поисковые системы, такие как бывшая AltaVista , используют методы полнотекстового поиска, в то время как другие индексируют только часть веб-страниц, проверенных их системами индексирования. [1]
При работе с небольшим количеством документов полнотекстовый поисковый движок может напрямую сканировать содержимое документов при каждом запросе , стратегия называется « последовательное сканирование ». Это то, что делают некоторые инструменты, такие как grep , при поиске.
Однако, когда количество документов для поиска потенциально велико или количество поисковых запросов для выполнения существенно, проблема полнотекстового поиска часто делится на две задачи: индексирование и поиск. На этапе индексирования будет просканирован текст всех документов и составлен список поисковых терминов (часто называемый индексом , но более правильно называть его согласованием ). На этапе поиска при выполнении определенного запроса ссылаются только на индекс, а не на текст исходных документов. [2]
Индексатор сделает запись в индексе для каждого термина или слова, найденного в документе, и, возможно, отметит его относительное положение в документе. Обычно индексатор игнорирует стоп-слова (такие как "the" и "and"), которые являются общими и недостаточно значимыми, чтобы быть полезными при поиске. Некоторые индексаторы также используют языковую специфичность для индексируемых слов. Например, слова "drives", "driven" и "driven" будут записаны в индексе под одним концептуальным словом "drive".
Полнота измеряет количество релевантных результатов, возвращаемых поиском, в то время как точность является мерой качества возвращаемых результатов. Полнота — это отношение возвращенных релевантных результатов ко всем релевантным результатам. Точность — это отношение количества возвращенных релевантных результатов к общему количеству возвращенных результатов.
Диаграмма справа представляет собой поиск с низкой точностью и низкой полнотой. На диаграмме красные и зеленые точки представляют собой общую популяцию потенциальных результатов поиска для данного поиска. Красные точки представляют собой нерелевантные результаты, а зеленые точки представляют собой релевантные результаты. Релевантность указывается близостью результатов поиска к центру внутреннего круга. Из всех возможных показанных результатов те, которые были фактически возвращены поиском, показаны на светло-голубом фоне. В примере был возвращен только 1 релевантный результат из 3 возможных релевантных результатов, поэтому полнота составляет очень низкое соотношение 1/3 или 33%. Точность для примера составляет очень низкое 1/4 или 25%, поскольку только 1 из 4 возвращенных результатов был релевантным. [3]
Из-за неоднозначности естественного языка , системы полнотекстового поиска обычно включают такие опции, как фильтрация для повышения точности и морфология для повышения отзыва. Поиск с контролируемым словарем также помогает смягчить проблемы низкой точности, помечая документы таким образом, чтобы устранить неоднозначности. Компромисс между точностью и отзывом прост: увеличение точности может снизить общий отзыв, в то время как увеличение отзыва снижает точность. [4]
Полнотекстовый поиск, скорее всего, извлечет много документов, которые не имеют отношения к предполагаемому поисковому вопросу. Такие документы называются ложными срабатываниями (см. Ошибка типа I ). Извлечение нерелевантных документов часто вызвано присущей естественному языку неоднозначностью . На диаграмме справа ложные срабатывания представлены нерелевантными результатами (красные точки), которые были возвращены поиском (на светло-голубом фоне).
Методы кластеризации, основанные на байесовских алгоритмах, могут помочь сократить количество ложных срабатываний. Для поискового термина «банк» кластеризация может использоваться для категоризации вселенной документов/данных на «финансовое учреждение», «место для сидения», «место для хранения» и т. д. В зависимости от встречаемости слов, относящихся к категориям, поисковые термины или результаты поиска могут быть помещены в одну или несколько категорий. Этот метод широко применяется в области электронного обнаружения . [ требуется разъяснение ]
Недостатки полнотекстового поиска были устранены двумя способами: путем предоставления пользователям инструментов, которые позволяют им более точно формулировать свои поисковые запросы, и путем разработки новых алгоритмов поиска, которые повышают точность поиска.
Алгоритм PageRank, разработанный Google, придает большую значимость документам, на которые ссылаются другие веб-страницы . [6] Дополнительные примеры см . в разделе Поисковая система .
Ниже приведен частичный список доступных программных продуктов, чьей основной целью является выполнение полнотекстовой индексации и поиска. Некоторые из них сопровождаются подробными описаниями их теории работы или внутренних алгоритмов, которые могут предоставить дополнительное представление о том, как может быть выполнен полнотекстовый поиск.