Поиск аргумента на определенной позиции в документе
Для поиска аргумента на определенной позиции в документе используется функция position().
Синтаксис
У функции position() нет обязательных аргументов. В их отсутствие нужно указать опциональные именованные параметры, например:
Опциональный параметр номер_позиции позволяет указать максимальную позицию (в токенах) аргумента. При отсутствии данного параметра функция ищет аргументы на первой позиции. При расчете позиции не учитываются знаки пунктуации.
Функция также поддерживает следующие опциональные именованные параметры:
Параметр |
Пояснение |
scope:=line/sentence/paragraph/text/table_cell/table_name/table_row_name/table_column_name/heading/page |
указывает позицию в строке/предложении/параграфе/тексте/таблице/заголовке/странице |
mode:=forward/backward |
указывает позицию от начала/конца выбранного диапазона |
min_pos |
указывает минимальную позицию аргумента |
max_pos |
указывает максимальную позицию аргумента |
min_snt |
указывает минимальный номер предложения |
max_snt |
указывает максимальный номер предложения |
Примечание
-
По умолчанию параметры принимают следующие значения: scope:=text, mode:=forward.
-
Параметр max_pos аналогичен первому опциональному аргументу номер_позиции.
-
Если для параметра min_snt указана минимальная позиция аргумента min_pos, то она будет отсчитываться от начала этого предложения. Аналогичное поведение будет для параметра max_snt с указанием максимальной позиции max_pos.
-
Если указана только позиция, без номера предложения, то она считается от начала параметра scope.
-
Если нужно считать позиции от конца предложений, то следует указывать отрицательные значения для параметров min_pos и max_pos.
Пример
Пример задачи: Найти тексты, в начале которых упоминается Москва
Можно написать запрос position(min_pos:=1, max_pos:=4, Москва, scope:=text), который позволит найти статьи, где слово Москва стоит на 1, 2, 3 или 4 позиции в начале текста.
Однако такой запрос не найдет упоминание Москвы в конце документа. Для этого нужно изменить запрос, задав значение именованного параметра mode: position(min_pos:=1, max_pos:=4, Москва, scope:=text, mode:=backward).