Сообщение от
Wayne Luke
Для совместимости с MySQL. Не думаю, что этот синтаксис подходит для обычного "человеческого" поиска, но не уверен что делает поиск vBulletin так как я не понимаю простые выражения.
boolean full-text search поддерживает следующие операторы:
+
Плюс, поставленный в начале слова указывает, что это слово должно быть в каждой строке результата результата поиска
-
Минус, поставленный в начале слова, указывает, что этого слова не должно быть ни в одной строке в результате поиска
(не указан никакой оператор)
По-умолчанию (когда не указаны ни +, ни -) слово не обязательно, но строки в которых присутствует это слово, выводятся в первых строках результата поиска (приоритет). Подвязано это к функциям мускуля MATCH() ... AGAINST() без модификатора IN BOOLEAN MODE.
> <
Эти два оператора используются для задания приоритета строк, в которых встречается слово. Оператор > увеличивает приоритет, оператор < уменьшает его. Примеры ниже.
( )
Скобки используются для группировки слов в выражения. Допускается несколько уровней группировки.
~
Знак ~ перед словом используется как оператор отрицания, задавая ОБРАТНЫЙ порядок приоритета слов. Это очень удобно для пометки “лишних” слов. Строка, содержащая это слово будет иметь низший приоритет, но не будет исключено из поиска, как это делает оператор -.
*
Звездочка используется как оператор обрезания слова. В отличие от других операторов, он ставится В КОНЦЕ СЛОВА.
"
Фраза, заключенная в двойные кавычки(‘"’) заставляет поиск искать строку один-в-один похожую на ту что в кавычках. Движок full-text разбивает фразы на слова, и выполняет поиск с индексом FULLTEXT для слов. После этого движок поиска производит поиск подстрок в найденных записях, так, чтобы учитывать все знаки препинания. Например, "тестовая фраза" не найдет "тестовая, фраза".
Если во фразе нет слов, присутствующих в индексе - ничего не будет найдено. Например, если в фразе все слова из СтопЛиста или короче, чем минимальная длина индексированных слов, то ничего не будет найдено.
Следующие фразы демонстируют работу операторов движка full-text:
'apple banana'
Возвращает в результате строки, содержащие любое из слов.
'+apple +juice'
Возвращает в результате строки, содержащие оба слова.
'+apple macintosh'
Возвращает в результате строки, содержащие слово “apple”, но в верхних строках результата будут сроки, содержащие слово “macintosh”.
'+apple -macintosh'
Находит строки со словом “apple” если нет слова “macintosh”.
'+apple +(>turnover <strudel)'
Возвращает в результате строки, содержащие слово “apple” и “turnover”, или “apple” и “strudel” (в любом порядке), фраза “apple turnover” будет приоритетнее (в первых строках результата) чем “apple strudel”.
'apple*'
Возвращает в результате строки “apple”, “apples”, “applesauce”, or
“applet”.
'"some words"'
Возвращает в результате строки, содержащие фразу “some words” (например, строки “some words of wisdom” но не “some noise words”).
Слова, которые игнорирует движок full-text search:
Слишком короткие слова игнорируются. Минимальная длина слова по-умолчанию для движка full-text search - 4 символа.
Игнориются слова из СтопЛиста. Такие как “the” или “some” потому что они слишком популярны и не несут в себе никакой смысловой нагрузки. У движка встроенный СтопЛист, который администратор может изменить.