Прямой поиск |
Внимание: |
Запрос для прямого поиска представляет собой алгебраическое (поисковое) выражение, в котором операндами являются термины словаря, а операторами – логические операторы булевой алгебры. Для изменения порядка выполнения логических операторов в поисковом выражении могут применяться скобки. |
Термин словаря включает в себя собственно термин словаря и префикс, если таковой используется для данного вида терминов.
Операнд поискового выражения |
В общем виде операнд поискового выражения можно представить следующим образом:
“<префикс><термин>$”/(tag1,tag2,…tagN)
где:
<префикс> - префикс, определяющий вид термина (вид словаря);
<термин> - собственно термин словаря;
$ - признак правого усечения термина; определяет совокупность терминов, имеющих начальную последовательность символов, совпадающую с указанным термином; может отсутствовать – в этом случае поиск идет по точному значению указанного термина.
“ – символ-ограничитель термина (двойные кавычки); должен использоваться обязательно, если термин включает в себя символы пробел, круглые скобки, решетка (#), а также символы, совпадающие с обозначениями логических операторов (см.. ниже);
/(tag1,tag2,…tagN) – конструкция квалификации термина; определяет метки поля, в которых должен находиться указанный термин, или точнее – вторую часть ссылки термина (Приложение 5. ТАБЛИЦЫ ВЫБОРА ПОЛЕЙ (ТВП)); может отсутствовать – что означает отсутствие дополнительных требований в части меток полей.
Логические операторы |
+ - оператор логического ИЛИ; соединение двух операндов (терминов) логическим оператором ИЛИ обозначает требование поиска записей, в которых присутствует хотя бы один из терминов;
* - оператор логического И; соединение двух терминов логическим оператором И обозначает требование поиска записей, в которых присутствуют оба термина;
^ - оператор логического НЕ; соединение двух терминов логическим оператором НЕ обозначает требование поиска записей, в которых присутствует первый термин и отсутствует второй; оператор НЕ не может быть одноместным (т.е. данному оператору, как и все м другим, должен ОБЯЗАТЕЛЬНО предшествовать термин);
(G) – первый оператор контекстного И; соединение двух терминов таким оператором контекстного И обозначает требование поиска записей, в которых оба термина присутствуют в одном и том же поле (или точнее – когда у терминов совпадают вторые части ссылок);
(F) – второй оператор контекстного И; соединение двух терминов таким оператором контекстного И обозначает требование поиска записей, в которых оба термина присутствуют в одном и том же повторении поля (или точнее – когда у терминов совпадают вторые и третьи части ссылок);
. – (точка обрамленная пробелами) третий оператор контекстного И; соединение двух терминов таким оператором контекстного И обозначает требование поиска записей, в которых оба термина присутствуют в одном и том же повторении поля друг за другом (или точнее – когда у терминов совпадают вторые и третьи части ссылок, а третьи части ссылок отличаются на единицу);
Правило: |
Логические операторы имеют приоритеты, которые определяют порядок их выполнения (в пределах одного уровня скобок). Ниже операторы приведены в порядке убывания приоритета: . (F) (G) * и ^ + Операторы одного приоритета выполняются слева направо (в пределах одного уровня скобок). Для изменения порядка выполнения логических операторов в поисковом выражении могут применяться круглые скобки. Выражения в скобках могут объединяться только операторами + * ^. |
Пример: |
Примеры запросов для прямого поиска: |
(“A=Иванов$” +”A=Петров$”) * (“V=03” + “V=05”)
“K=трактор$” (F) “K=колесн$” + “K=бульдозер$” (F) “K=гусен$”
“K=очист$”/(200,922) * “K=вод$”/(200,922)