Поиск аргумента на определенной позиции в документе

Для поиска аргумента на определенной позиции в документе используется функция position().

Синтаксис

position([номер_позиции],аргумент_1, аргумент_2…​)

Опциональный параметр номер_позиции позволяет указать максимальную позицию (в токенах) аргумента. При отсутствии данного параметра функция ищет аргументы на первой позиции. При расчете позиции не учитываются знаки пунктуации.

Функция также поддерживает следующие опциональные именованные параметры:

Параметр

Пояснение

scope:=sentence/paragraph/text/table_cell/table_name/table_row_name/table_column_name

указывает позицию в предложении/параграфе/тексте/таблице

mode:=forward/backward

указывает позицию от начала/конца выбранного диапазона

min_pos

указывает минимальную позицию аргумента

max_pos

указывает максимальную позицию аргумента

Примечание

По умолчанию параметры принимают следующие значения: scope:=text, mode:=forward. Параметр max_pos аналогичен первому опциональному аргументу номер_позиции.

Пример

position(1, встреча, scope:=sentence) находит слово «встреча», если оно является первым словом в предложении, например, «Встреча прошла в рамках третьего заседания комитета по сотрудничеству».

position(2, встреча, совещание) находит слова «встреча» или «совещание», если их позиция < = 2 от начала документа, например, «Провел совещание руководитель исполкома района Вячеслав Козлов», «Встреча и регистрация посетителей салона», «На встречу приехали руководители Туристической администрации города», «Совещание прошло в декабре».

position(1, встреча, scope:=sentence, mode:=backward) = position(встреча, scope:=sentence, mode:=backward, max_pos:=1) находит слово «встреча», если оно является последним словом в предложении, например, «Не надо преувеличивать значимость предстоящей встречи».

position(1, встреча, mode:=backward) = position(встреча, mode:=backward, max_pos:=1, scope:=text) находит слово «встреча», если оно является последним словом в документе.

position(2, встреча, scope:=sentence, mode:=backward) = position(встреча, scope:=sentence, mode:=backward, max_pos:=2) находит слово «встреча», если его позиция < = 2 от конца предложения, например, «…сообщается в материалах к встрече лидеров», «Не надо преувеличивать значимость предстоящей встречи».

position(встреча, min_pos:=2, max_pos:=4, scope:=sentence) находит слово «встреча», если его позиция находится в интервале [2;4] от начала предложения, например, «Итоги встречи окажут значимое влияние на динамику сырьевых товаров», «Российскую сторону на встрече представляет министр энергетики».

position(встреча, min_pos:=3, max_pos:=3, scope:=sentence, mode:=backward) находит слово «встреча», если оно находится на третьей позиции от конца предложения, например, «Об итогах этой закрытой для прессы встречи не сообщается».

position(таблетка or сироп, scope:=table_row_name) находит слова «таблетка» и/или «сироп», если они находятся на первой позиции в названии строки таблицы.

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

Можно написать запрос position(min_pos:=1, max_pos:=4, Москва, scope:=text), который позволит найти статьи, где слово Москва стоит на 1, 2, 3 или 4 позиции в начале текста.

Однако такой запрос не найдет упоминание Москвы в конце документа. Для этого нужно изменить запрос, задав значение именованного параметра mode: position(min_pos:=1, max_pos:=4, Москва, scope:=text, mode:=backwards).