По умолчанию в модуле поиска в качестве поисковой системы используется библиотека Zend_Search_Lucene (http://framework.zend.com/manual/en/zend.search.lucene.html).
Данная библиотека поддерживает следующие возможности в языке запросов:
Логические выражения в запросе — AND (и), OR (или), NOT (не) с группировкой подзапросов:
родной AND ((город AND NOT Москва) OR деревня OR село OR посёлок)
Логические операторы должны быть набраны ЗАГЛАВНЫМИ буквами.
Вместо AND, OR и NOT можно использовать &&, || и ! соответственно.
По умолчанию, когда между словами отсутствует логический оператор, подразумевается оператор AND. Это можно изменить в настройках модуля (вкладка «Настройки» — «Общие»).
Поиск документов, не включающих определённое слово:
площадь -Красная
Не следует одновременно использовать логический запрос и оператор исключения «-», например, поиск по запросу площадь -Красная OR Революции может привести к появлению сообщения об ошибке в запросе.
Поиск документов, включающих определённое слово (когда в настройках модуля установлен логический оператор по умолчанию OR):
площадь +Красная Революции
(найдёт все документы, имеющее слово «красный», при этом выше в результатах поиска окажутся документы со словами «площадь» и «революции»; запрос эквивалентен логическому запросу «(площадь AND Красная) OR Революции)»
Поиск по полю:
title:магазин title:(условия доставки OR обслуживания)
По умолчанию модулем поиска создаются поля title (заголовок страницы, взятый из соответствующего тэга), meta (содержимое META-тэгов description, keywords) и last_modified (содержит время обновления документа в формате ГГГГММДДччммсс).
Поиск документов, содержащих фразу:
"поиск по сайту"
Будут найдены все документы, в которых слова встречаются в указанном порядке. (Если слово «по» находится в списке стоп-слов, то будут также найдены документы, в которых встречаются последовательности «поиск сайта», «поиск для сайта» и т. д.)
Поиск документов, содержащих слова на определённом расстоянии друг от друга:
"Лев Толстой"~2
Будут найдены документы, в которых слова «Лев» и «Толстой» расположены не далее, чем в двух словах друг от друга — например, документы с фразами «Лев Толстой», «Лев Николаевич Толстой», «Толстой Лев» (а также «толстые львы»).
Поиск похожих слов («нечёткий поиск») с указанием степени схожести (от 0.1 до 0.9) или без него (если степень схожести не указана, применяется коэффициент 0.5):
тяжелый~ (найдет документы со словами «тяжелый», «тяжесть», «тяжко» и т.п.) дом~0.6 (найдет документы, в которых есть слова, в которых 60% букв те же, что и в слове «дом», например «дот», «дам», «том»)
Возможность указать, что какое-либо слово в запросе имеет бо́льшую (или меньшую) важность:
купить^0.5 LCD телевизор^4
Поиск слов по шаблону (шаблон для подстановки одной буквы — ?, для любого количества символов — *):
нетк?т авто* гео*ский
По умолчанию поиск по шаблону отключен в настройках модуля, так как может создавать повышенную нагрузку на сервер.
Поиск по интервалу значений:
last_modified:[20100401000000 TO 20100402000000] (включает конечные значения интервала) last_modified:{20100401000000 TO 20100402000000} (не включает конечные значения) title:[картофель TO томат] (включает слова «картофель», «лук», «огурец», «томат» и т.п.)
По умолчанию поиск по интервалу значений отключен в настройках модуля.
Запрос с интервалом переписывается в логический запрос со всеми возможными значениями, поэтому может возникнуть ошибка «слишком много терминов в запросе» (по умолчанию — 2048).