Полнотекстовый поиск

Полнотекстовый поиск (англ. Full text searching, фр. Recherche en texte integral) — автоматизированный поиск документов, при котором поиск ведётся не по именам документов, а по их содержимому, всему или существенной части.[1] Многие веб-сайты и прикладные программы (например, программы для обработки текстов) предоставляют возможности полнотекстового поиска. Некоторые системы веб-поиска, такие как AltaVista, используют методы полнотекстового поиска, в то время как другие индексируют только часть веб-страниц, проверенных их системами индексации.

Полнотекстовый индекс

Первые версии программ полнотекстового поиска предполагали сканирование всего содержимого всех документов в поиске заданного слова или фразы. При использовании такой технологии поиск занимал очень много времени (в зависимости от размера базы), а в интернете был бы невыполним. Современные алгоритмы заранее формируют для поиска так называемый полнотекстовый индекс — словарь, в котором перечислены все слова и указано, в каких местах они встречаются. При наличии такого индекса достаточно осуществить поиск нужных слов в нём и тогда сразу же будет получен список документов, в которых они встречаются.

MySQL

Полнотекстовые индексы в MySQL реализуются как тип индекса FULLTEXT, который может применяться для столбцов типов VARCHAR, TEXT и их разновидностей. Такой индекс позволяет эффективно искать текст по ключевым словам без перебора всех строк таблицы.[2]

Поиск выполняется с помощью функций MATCH() и AGAINST(). Пример запроса:

  SELECT * 
  FROM articles 
  WHERE MATCH (title, body) 
  AGAINST ('поиск' IN NATURAL LANGUAGE MODE);

При использовании полнотекстового поиска в MySQL доступны разные режимы работы:

  • NATURAL LANGUAGE MODE — поиск по релевантности, без логических операторов;
  • BOOLEAN MODE — поиск с поддержкой операторов (`+`, `-`, `*`, `"..."` и др.);
  • WITH QUERY EXPANSION — поиск с расширением запроса для увеличения количества совпадений.[3]

Пример использования булевого режима:

  SELECT * 
  FROM articles 
  WHERE MATCH (title, body) 
  AGAINST ('+поиск -робот' IN BOOLEAN MODE);

Результат (жирным выделены найденные соответствия):

id title body
5 Регулярные выражения В большинстве реализаций регулярных выражений есть способ производить поиск фрагмента текста …
1 Полнотекстовой поиск Полнотекстовой поиск

См. также

Ссылки

Примечания

  1. Скачать ГОСТ 7.73-96 СИБИД. Поиск и распространение информации. Термины и определения. Дата обращения: 9 июля 2011. Архивировано 31 мая 2011 года.
  2. MySQL :: 8.0 Reference Manual :: 12.9 Full-Text Search Functions. MySQL. Дата обращения: 19 сентября 2025.
  3. MySQL :: Full-Text Searches with Query Expansion. MySQL. Дата обращения: 19 сентября 2025.