Полнотекстовый поиск
Полнотекстовый поиск (англ. Full text searching, фр. Recherche en texte integral) — автоматизированный поиск документов, при котором поиск ведётся не по именам документов, а по их содержимому, всему или существенной части.[1]
Полнотекстовый индекс
Первые версии программ полнотекстового поиска предполагали сканирование всего содержимого всех документов в поиске заданного слова или фразы. При использовании такой технологии поиск занимал очень много времени (в зависимости от размера базы), а в интернете был бы невыполним. Современные алгоритмы заранее формируют для поиска так называемый полнотекстовый индекс — словарь, в котором перечислены все слова и указано, в каких местах они встречаются. При наличии такого индекса достаточно осуществить поиск нужных слов в нём и тогда сразу же будет получен список документов, в которых они встречаются.
Реализации
MySQL
Полнотекстовые индексы в MySQL обозначаются как типом «FULLTEXT», который может применяться для столбцов типов «VARCHAR» и «TEXT». При массовом добавлении данных в таблицу с полями «FULLTEXT» индекс будет создаваться сразу, что замедлит работу, для избежания эффекта рекомендуется модернизировать поля уже после добавления.
Поиск выполняется с помощью функций MATCH() и AGAINST():
SELECT * FROM articles WHERE MATCH (title, body) AGAINST ('поиск');
При этом поисковая фраза должна быть написана слово в слово (то есть «поиска», «поисковик» — невалидные варианты для примера выше)
Результат (жирным выделены найденные соответствия):
id | title | body |
---|---|---|
5 | Регулярные выражения | В большинстве реализаций регулярных выражений есть способ производить поиск фрагмента текста … |
1 | Полнотекстовой поиск | Полнотекстовой поиск … |
Ссылки
- Бартунов О., Сигаев, Ф. Введение в полнотекстовый поиск в PostgreSQL.
- Лебедев, Д., Юсов, О. Полнотекстовый поиск в MySQL на PHP.
- Петрухин, А. Н., Дворецкий, А. Ю. Цифровой поиск как основа реализации словаря полнотекстовой базы данных // Вопросы радиоэлектроники. — Москва: Центральный научно-исследовательский институт экономики, систем управления и информации «Электроника. — ISSN 0233-9950.
- Симанкина, Н. И., Шипулина, К. В., Костарев, А. А., Окунев, А. Ф. Разработка подсистемы полнотекстовой индексации и полнотекстового поиска для платформы облачного контент-репозитория. — 2014. — № 4 (27). — С. 92—96.
- Филатов, В. О., Кравцов, И. В., Варфоломеев, А. Г. Информационная система для работы с полнотекстовыми базами данных исторических документов на основе технологии XML.
- Зайцев, А. В. Методика создания индексных файлов для осуществления полнотекстового поиска в сети Интернет.
- Колосов, А. П., Богатырев, М. Ю. Система полнотекстового поиска по длинным запросам.