Поиск

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

Начиная с версии 4.0.1, >MySQL> >может также выполнять булевский полнотекстовый поиск, используя модификатор IN BOOLEAN MODE.
mysql> SELECT * FROM articles WHERE MATCH (title,body) -> AGAINST (4MySQL -YourSQL1 IN BOOLEAN MODE);

Представленный выше запрос извлекает все строки, содержащие слово "MySQL", но не содержащие слова "YourSQL".
Булевский полнотекстовый поиск имеет следующие характеристики:

  1. Он не использует 50%-ный порог.
  2. Он не сортирует автоматически строки в порядке убывания релевантности. Вы можете это видеть в предыдущем примере: строка с наибольшей релевантностьюта, что содержит "MySQL" дважды, - в списке выведена последней, а не первой.
  3. Он может работать даже без FULL TEXT-индекса, несмотря на то, что это будет медленнее.

Булевский полнотекстовый поиск поддерживает следующие операции:

  1. +. Ведущий знак "плюс" означает, что слово должно присутствовать во всех возвращаемых строках.
  2. -. Ведущий знак минус означает, что слово не должно присутствовать ни в одной из возвращаемых строк.
  3. (операция не указана). По умолчанию (когда не указан ни "плюс", ни "минус"),
    слово является необязательным, однако строки, содержащие его, будут оцениваться выше. Это подобно поведению MATCH().. .AGAINST() без модификатора

IN BOOLEAN MODE.

  1. > <. Эти две операции применяются для изменения влияния слова на значение релевантности, присваиваемого строке. Операция > увеличивает влияние слова, а
    операция < — уменьшает. См. примеры ниже.
  2. (). Скобки используются для того, чтобы группировать слова в подвыражения. Подгруппы в скобках могут быть вложенными.
  3. ~. Ведущий символ "тильда" действует как операция отрицания, делая влияние слова на релевантность строки отрицательным. Это применимо для отметки излишних слов. Строка, включающая такие слова, будет оцениваться ниже лишних слов. Строка, включающая такие слова, будет оцениваться ниже других, но не будет исключаться вообще, как это делается с помощью операциилишних слов. Строка, включающая такие слова, будет оцениваться ниже других, но не будет исключаться вообще, как это делается с помощью операции
    1. *. "Звездочка" - это операция усечения. В отличие от других операций, она должна быть добавлена к слову.
    2. ". Фраза, заключенная в двойные кавычки, соответствует только тем строкам, которые содержат ее литерально — в точности так, как она приведена.

    Следующие примеры демонстрируют некоторые поисковые строки, которые исполь­зуют булевские операции полнотекстового поиска:

      • ' apple banana'. Искать строки, которые содержат, как минимум, одно из двух слов.
      • '+apple +juice'. Искать строки, которые содержат оба слова.
      • '+apple macintosh'. Искать строки, содержащие слово "apple", но ранг строки повышается, если в ней есть также слово "macintosh".
      • '+apple -macintosh'. Искать строки, в которых есть слово "apple", но нет "macintosh".
      • '+apple +(>turnover <strudel)\ Искать строки, содержащие слова "apple" и "turnover", либо "apple" и "strudel" (в любом порядке), но ранг "apple turnover" выше, чем "apple strudel".
      • 'apple*1. Искать строки, содержащие такие слова, как "apple", "apples", "applesauce" или "applet".
      • ' "some words"'. Искать строки, содержащие буквальную фразу "some words" (например, строки, которые содержат "some words of wisdom", но не "some noise
        words"). Следует отметить, что символы "", которые обрамляют фразу, являются ограничителями фразы, а не кавычками, которые окружают собственно поисковую строку.