Операторы

Оператор AND

Оператор and используется для поиска документов, в которых присутствуют все перечисленные аргументы (независимо от их взаимного расположения и удаленности друг от друга).

Синтаксис

аргумент_1 and аргумент_2

Пример

автомобиль and машина and "транспортное средство"

находит документы, в которых встречаются все вышеперечисленные аргументы («автомобиль», «машина» и «транспортное средство»).

Оператор OR

Оператор or используется для поиска документов, в которых присутствует хотя бы один из указанных в запросе аргументов.

Синтаксис

аргумент_1 or аргумент_2 = аргумент_1 | аргумент_2

Пример

автомобиль or машина or "транспортное средство" = автомобиль | машина | "транспортное средство"

находит документы, в которых встречается хотя бы одно из перечисленных слов («автомобиль», «машина», «транспортное средство»).

Примечание

Для операторов or и and существуют аналогичные им функции orn и andn, которые удобно использовать для более компактной записи поискового выражения с несколькими аргументами.

январь or февраль or ноябрь or декабрь = orn(январь, февраль, ноябрь, декабрь)

январь and февраль and ноябрь and декабрь = andn(январь, февраль, ноябрь, декабрь)

Оператор XOR

Оператор xor используется для поиска документов, в которых встречается только один из перечисленных аргументов.

Синтаксис

аргумент_1 xor аргумент_2

Пример

автомобиль xor самолет

находит документы, в которых встречается только одно из перечисленных слов («автомобиль», «самолет»), и не находит документы, в которых встречаются оба этих слова либо не встречается ни одно из этих слов.

Оператор NOT

Оператор not используется для поиска документов, в которых нет указанных аргументов.

Синтаксис

not аргумент

Пример

not автомобиль

находит документы, в которых нет слова «автомобиль»;

not(автомобиль or машина or "транспортное средство")

находит документы, в которых нет слов «автомобиль», «машина», «транспортное средство».

Пример задачи: Найти тексты о Палестине, исключив упоминание палестино-израильского конфликта.

Чтобы исключить тексты о палестино-израильском конфликте, можно запретить для поиска слова «Израиль», «Иерусалим», «израильский», «израильтянин», составив следующий запрос:

палестина and not orn(израиль,иерусалим,израильский,израильтянин) = палестина and not (израиль or иерусалим or израильский or израильтянин)

Оператор вычитания множеств "/"

Оператор "/" (или эквивалентные ему функции difference() или except()) используется для поиска документов, которые содержат вхождения первого аргумента, не пересекающиеся с вхождениями второго аргумента.

Синтаксис

аргумент_1 / аргумент_2

Пример

term(positive) / orn(чистый, полезный, исполнительный) находит документы, в которых встречаются слова, входящие в словарный список «positive», за исключением слов «чистый», «полезный», «исполнительный»;

case(title) / knownword(geoadministrative) находит документы, содержащие слова, написанные с большой буквы, которых нет в словаре геоадминистративных объектов.

Подробнее об использовании этого оператора можно узнать в разделе Исключение результатов из поиска.

Оператор пересечения множеств "&"

Оператор "&" (или эквивалентная ему функция intersect()) используется для поиска документов, которые содержат вхождения первого аргумента, пересекающиеся с вхождениями второго аргумента.

Синтаксис

аргумент_1 & аргумент_2

Пример

term(list1) & term(list2) находит документы, в которых встречаются слова, входящие как в словарный список «list1», так и в словарный список «list2»;

entity(organizations) & entity(geoadministrative) находит документы, где упоминаются организации, в имени которых есть географические объекты («МЧС России», «МИД Украины», «Верховный суд Хакасии» и т.д.);

case(title) & lemma(noun) = case(title, lemma(noun)) находит документы, в которых есть существительные, написанные с большой буквы.

Пример задачи: Найти названия компаний, деятельность которых связана с Москвой.

Чтобы найти названия компаний, в названии которых встречается слово «Москва» или его производные («Московский», «Мос»), можно составить следующий запрос:

entity(companies) & regex("Мос\w+", casense"=yes)

Для корректной работы данного запроса необходим выполненный родительский узел «Извлечение сущностей». Подробнее о работе узла можно узнать в разделе «Узел "Извлечение сущностей"».

Примечание

Функции include() и intersect() имеют дополнительные возможности, которых нет у оператора &. Подробнее об этом вы можете узнать в описании функций include() и intersect().

Порядок выполнения операторов

Если поисковый запрос содержит несколько операторов, порядок их выполнения определяется их приоритетом - операторы с более высоким приоритетом выполняются в первую очередь.

Уровень приоритета операторов приведен в таблице ниже:

Оператор

Приоритет

&

5

/

5

not

4

xor

3

and

2

or

1

Если поисковый запрос содержит несколько операторов с одинаковым приоритетом, они выполняются в порядке их упоминания в выражении слева направо.

Пример

partofspeech(noun) / аренда / недвижимость = (partofspeech(noun) / аренда) / недвижимость

находит документы, в которых есть существительные кроме слов «аренда» и «недвижимость».

Приоритет оператора можно изменить, заключив содержащее его подвыражение в скобки. Подзапрос в скобках имеет приоритет перед другими частями запроса.

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

Пример

продажа or аренда and недвижимость

находит документы, в которых есть либо слово «продажа», либо оба слова «аренда» и «недвижимость», так как у оператора and более высокий приоритет, и он выполняется первым;

(продажа or аренда) and недвижимость

находит документы, в которых есть слово «недвижимость» и одно из слов «продажа» или «аренда», так как у выражения в скобках более высокий приоритет, и оно выполняется первым.