возвращает единственную строку (табл. 3.19). Таблица 3.19. Результат выполнения запроса

В других наименованиях товаров также присутствует ключевое слово «Мосбытприбор», однако программа MySQL игнорирует те слова из критерия поиска, которые встречаются более чем в половине строк. Игнорируются также слишком короткие слова (из трех и менее символов) и общеупотребительные слова (список этих слов – стоп-лист – приводится на веб-странице http://dev.mysql.com/doc/ refman/5.0/en/fulltext-stopwords.html).

Если необходимо выполнить поиск по словам, которые могут встречаться более чем в 50 % строк, необходимо использовать поиск в логическом режиме. Для этого необходимо включить в выражение MATCH. AGAINST. параметр IN BOOLEAN MODE. Управлять поиском в логическом режиме можно с помощью следующих спецсимволов:

• + – перед словом означает, что будут найдены только строки, содержащие это слово;

• – – перед словом означает, что будут найдены только строки, не содержащие это слово;

• < – перед словом уменьшает «вес» этого слова при вычислении релевантности;

• > – перед словом увеличивает «вес» этого слова при вычислении релевантности;

• ~ – перед словом делает «вес» слова отрицательным (уменьшающим релевантность);

• * — после слова означает произвольное окончание; например, запрос по слову +чай* выведет строки, содержащие слова «чайник», «чайница», «чайка» и т. п.;

• " – сочетание слов, заключенное в двойные кавычки, рассматривается как единое слово;

• (\' и \') – круглые скобки позволяют создавать вложенные выражения.

Например, запрос

SELECT * FROM Products

WHERE MATCH (description)

AGAINST (\'-Чайник +Мосбытприбор\' IN BOOLEAN MODE);

возвращает строки, содержащие слово «Мосбытприбор», но не имеющие слова «Чайник» (табл. 3.20). Таблица 3.20. Результат выполнения запроса

Результат полнотекстового поиска в логическом режиме не упорядочивается.

Еще один режим полнотекстового поиска – расширенный режим. Он отличается от обычного тем, что в результат запроса, помимо строк, отвечающих заданному критерию поиска, включаются строки, найденные по принципу схожести с несколькими первыми строками, наиболее релевантными исходному критерию. Расширенный режим полезен при поиске «наугад», когда заранее неясно, по какому критерию искать нужную строку. Для поиска в логическом режиме необходимо включить в выражение MATCH… AGAINST… параметр WITH QUERY EXPANSION:

SELECT * FROM Products

WHERE MATCH (description)

AGAINST (\'Чайник Мосбытприбор\' WITH QUERY EXPANSION);

Перейти на страницу:

Похожие книги