Операторы сравнения
Для поиска документов, значения свойств которых соответствуют заданным условиям, можно использовать в запросах операторы сравнения. Например, используя относительные запросы, можно найти все документы размером более 100 000 байт, созданные не позже 1 января 1999 года.
В следующей таблице приведены операторы сравнения.
Оператор |
Описание |
< |
Меньше |
<= |
Меньше или равно |
= |
Равно |
>= |
Больше или равно |
> |
Больше |
!= |
Не равно |
В следующей таблице приведены примеры запросов с операторами сравнения в длинной и короткой формах.
Длинная форма |
Короткая форма |
Результат |
{prop name=DocPageCount} >6 {/prop} |
@DocPageCount>6 |
Документы размеров более 6 страниц |
Примечание
- В службе индексирования запрос @contents = текст является неправильным, так как к свойству Contents неприменимы операторы сравнения.
Относительные сравнения применяются к последнему указанному свойству. Следующие запросы эквивалентны: @DocPageCount>6AND<10
@DocPageCount>6AND@DocPageCount<10
Операторы сравнения и векторы
При использовании упорядоченных наборов значений, называемых векторами, операторы сравнения применяются к соответствующим элементам вектора. Условие сравнения векторов истинно (возвращаются результаты), если выполняются все отдельные сравнения.
Рассмотрим два следующих вектора:
A (a1; a2; a3)
B (b1; b2; b3)
Сравнение A>B выполняется только в том случае, если a1>b1, a2>b2 и a3>b3.
Если количество элементов в векторах не совпадает, сравниваются только соответствующие элементы. Остальные элементы учитываться не будут.
Операторы AllOf и SomeOf
Операторы AllOf (^a) и SomeOf (^s) можно использовать совместно с операторами сравнения при сравнении векторов. Если используется оператор AllOf, для всех элементов вектора слева от оператора сравнения должно выполняться сравнение со всеми элементами вектора справа. Если используется оператор SomeOf, сравнение должно выполняться хотя бы для одного из элементов вектора.
Рассмотрим следующие примеры:
Сравнение |
Результат |
(1,2,3)^a>(1,2) |
Это сравнение не выполняется, так как первый элемент слева не больше первого элемента справа. |
(1,2,3)^s>(2,1) |
Это сравнение выполняется, так как третий элемент слева больше первого элемента справа. |
Двоичное сравнение
Кроме обычных операторов сравнения в запросах можно использовать двоичные операторы сравнения. Операторы AllOf и SomeOf позволяют сравнивать значения свойств с двоичным значением или поразрядно.
Оператор |
Пример |
Примечание |
^a |
@attrib^a 0x820 |
В этом примере службой индексирования выполняется поиск только сжатых документов с атрибутом <эАрхивный>. |
^s |
@attrib^s 0x20 |
В этом примере службой индексирования выполняется поиск сжатых документов и документов с атрибутом <эАрхивный>. |
|