Полнотекстовый поиск
Полнотекстовый поиск (англ. 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 | Полнотекстовой поиск | Полнотекстовой поиск … |
См. также
- Поисковый робот
- Поисковый индекс
- Индексация в поисковых системах
Ссылки
- Бартунов О., Сигаев, Ф. Введение в полнотекстовый поиск в PostgreSQL. Архивировано 8 октября 2015 года.
- Лебедев, Д., Юсов, О. Полнотекстовый поиск в MySQL на PHP. Архивировано 1 января 2016 года.
- Петрухин, А. Н., Дворецкий, А. Ю. Цифровой поиск как основа реализации словаря полнотекстовой базы данных // Вопросы радиоэлектроники. — Москва: Центральный научно-исследовательский институт экономики, систем управления и информации «Электроника. — ISSN 0233-9950.
- Симанкина, Н. И., Шипулина, К. В., Костарев, А. А., Окунев, А. Ф. Разработка подсистемы полнотекстовой индексации и полнотекстового поиска для платформы облачного контент-репозитория. — 2014. — № 4 (27). — С. 92—96.
- Филатов, В. О., Кравцов, И. В., Варфоломеев, А. Г. Информационная система для работы с полнотекстовыми базами данных исторических документов на основе технологии XML. Архивировано 18 августа 2019 года.
- Зайцев, А. В. Методика создания индексных файлов для осуществления полнотекстового поиска в сети Интернет. Архивировано 23 декабря 2015 года.
- Колосов, А. П., Богатырев, М. Ю. Система полнотекстового поиска по длинным запросам. Архивировано 4 марта 2016 года.
Примечания
- ↑ Скачать ГОСТ 7.73-96 СИБИД. Поиск и распространение информации. Термины и определения. Дата обращения: 9 июля 2011. Архивировано 31 мая 2011 года.
- ↑ MySQL :: 8.0 Reference Manual :: 12.9 Full-Text Search Functions. MySQL. Дата обращения: 19 сентября 2025.
- ↑ MySQL :: Full-Text Searches with Query Expansion. MySQL. Дата обращения: 19 сентября 2025.