PHP поискПолнотекстовый поискПолнотекстовый поиск в СУБД MySQL на сегодняшний день поддерживается только для таблиц типа MylSAM и только для текстовых столбцов переменной длины (TEXT И VARCHAR). Эта возможность активируется созданием индекса типа FULLTEXT ДЛЯ столбцов, по которым необходимо осуществлять поиск. Полнотекстовый поиск в СУБД MySQL не чувствителен к регистру. Кроме того, при поиске игнорируются так называемые "общеупотребительные" слова. К ним относятся слишком короткие слова (по умолчанию состоящие меньше, чем из четырех символов), а также слова, встречающиеся, по крайней мере, в половине записей. Так если в таблице имеются только две записи, то поиск не даст результатов, поскольку каждое слово будет присутствовать в половине записей. Для использования возможности полнотекстового поиска в таблице, содержащей текстовые поля, необходимо создать индексы FULLTEXT. Изменить уже существующие таблицы можно при помощи SQL-оператора ALTER. В листинге ниже для текстового поля name таблицы table_author создается индекс FULLTEXT.
В листинге сразу после ключевого слова FULLTEXT следует имя создаваемого индекса, за которым в скобках указано имя текстового столбца. Индекс FULLTEXT можно создать сразу по нескольким столбцам. Для этого в скобках после имени индекса нужно указать имена двух столбцов через запятую:
Если индекс создается только по одному столбцу и его имя совпадает с именем столбца, то имя индекса, размещаемое после ключевого слова FULLTEXT, можно опустить. На количество индексов в таблице ограничения также не накладываются, допустимо создание нескольких индексов:
Поиск выполняется при помощи встроенной функции MATCH(), в качестве аргумента которой выступает один или более индексов типа FULLTEXT, а также функции AGAINST (), которая принимает в качестве аргумента искомую строку: Оператор SELECT, осуществляющий полнотекстовый поиск
В листинге из таблицы table_author извлекаются все записи, соответствующие статьям, в названии которых встречается слово "программирование". Синтаксис допускает использование нескольких конструкций MATCH() — AGAINST() после оператора WHERE, разделенных логическими операторами OR ИЛИ AND
В листинге из таблицы table_author извлекаются все записи, соответствующие статьям, в теле которых присутствует либо слово "программирование", либо слово "кодирование". Результаты поиска сортируются в порядке уменьшения релевантности. Величина релевантности представляет собой неотрицательное число с плавающей точкой. Релевантность вычисляется на основе количества слов в данной строке столбца, количества уникальных слов в этой строке, общего количества слов в тексте и числа документов (строк), содержащих отдельное слово. Начиная с версии 4.0.1, СУБД MySQL поддерживает поиск в так называемом логическом режиме, позволяющем задать обязательное отсутствие слова в результатах запроса, изменять величину релевантности для отдельных слов и многое другое. PHP поискПример использования полнотекстового поиска в PHP Допустим, в нашей базе есть столбец article_content с индексом FULLTEXT. Приведем пример полнотекстового поиска всех записей, где встречается выражение «php поиск»:
Источник: webworks.com.ua |
КОНТАКТЫ
г. Екатеринбург info@vismech.ru |
текущее: НОВОСТИ 05.12.2013 - Уход за флэш-накопителем 05.12.2013 - Компьютер самопроизвольно выключается 05.12.2013 - Почему не запускается компьютер? 27.11.2013 - Canon Legria HF R406 - Описание видеокамеры 27.11.2013 - TravelMate P645 новый лэптоп бизнес-класса от Acer |