Операторы
Оператор AND
Оператор and используется для поиска документов, в которых присутствуют все перечисленные аргументы (независимо от их взаимного расположения и удаленности друг от друга).
Синтаксис
Пример
Оператор OR
Оператор or используется для поиска документов, в которых присутствует хотя бы один из указанных в запросе аргументов.
Синтаксис
Пример
Примечание
Для операторов or и and существуют аналогичные им функции orn и andn, которые удобно использовать для более компактной записи поискового выражения с несколькими аргументами.
Оператор XOR
Оператор xor используется для поиска документов, в которых встречается только один из перечисленных аргументов.
Синтаксис
Пример
Оператор NOT
Оператор not используется для поиска документов, в которых нет указанных аргументов.
Синтаксис
Пример
Пример задачи: Найти тексты о Палестине, исключив упоминание палестино-израильского конфликта.
Чтобы исключить тексты о палестино-израильском конфликте, можно запретить для поиска слова «Израиль», «Иерусалим», «израильский», «израильтянин», составив следующий запрос:
Оператор вычитания множеств "/"
Оператор "/" (или эквивалентные ему функции difference() или except()) используется для поиска документов, которые содержат вхождения первого аргумента, не пересекающиеся с вхождениями второго аргумента.
Синтаксис
Пример
Подробнее об использовании этого оператора можно узнать в разделе Исключение результатов из поиска.
Оператор пересечения множеств "&"
Оператор "&" (или эквивалентная ему функция intersect()) используется для поиска документов, которые содержат вхождения первого аргумента, пересекающиеся с вхождениями второго аргумента.
Синтаксис
Пример
Пример задачи: Найти названия компаний, деятельность которых связана с Москвой.
Чтобы найти названия компаний, в названии которых встречается слово «Москва» или его производные («Московский», «Мос»), можно составить следующий запрос:
entity(companies) & regex("Мос\w+", casense"=yes)
Для корректной работы данного запроса необходим выполненный родительский узел «Извлечение сущностей». Подробнее о работе узла можно узнать в разделе «Узел "Извлечение сущностей"».
Примечание
Функции include() и intersect() имеют дополнительные возможности, которых нет у оператора &. Подробнее об этом вы можете узнать в описании функций include() и intersect().
Порядок выполнения операторов
Если поисковый запрос содержит несколько операторов, порядок их выполнения определяется их приоритетом - операторы с более высоким приоритетом выполняются в первую очередь.
Уровень приоритета операторов приведен в таблице ниже:
Оператор |
Приоритет |
& |
5 |
/ |
5 |
not |
4 |
xor |
3 |
and |
2 |
or |
1 |
Если поисковый запрос содержит несколько операторов с одинаковым приоритетом, они выполняются в порядке их упоминания в выражении слева направо.
Пример
Приоритет оператора можно изменить, заключив содержащее его подвыражение в скобки. Подзапрос в скобках имеет приоритет перед другими частями запроса.
Порядок выполнения операторов может повлиять на результаты запроса.
Пример