position

Назначение

Находит документы, содержащие аргументы на указанной позиции в тексте.

Синтаксис

position()

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

Аргументы

У функции position() нет обязательных аргументов. В их отсутствие нужно указать опциональные именованные параметры, например:

position(max_snt:=1) находит первое предложение каждого текста.

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

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

  • scope:=line/sentence/paragraph/text/table_cell/table_name/table_row_name/table_column_name/heading/page указывает позицию в строке/предложении/параграфе/тексте/таблице/заголовке/странице (значение по умолчанию - text);

  • mode:=forward/backward указывает позицию от начала/конца выбранного диапазона (значение по умолчанию - forward);

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

  • max_pos указывает максимальную позицию аргумента (аналогично первому опциональному аргументу номер_позиции).

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

  • min_snt указывает минимальный номер предложения;

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

Если для параметра min_snt указана минимальная позиция аргумента min_pos, то она будет отсчитываться от начала этого предложения. Аналогичное поведение будет для параметра max_snt с указанием максимальной позиции max_pos.

Если указана только позиция, без номера предложения, то она считается от начала параметра scope.

Возвращаемое значение

Документы, соответствующие запросу.

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

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

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

  • 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(min_snt:=1, min_pos:=1, max_snt:=1, max_pos:=2, mode:=backward) находит первые два слова в последнем предложении.

  • position(min_snt:=1, min_pos:="-1") находит токены начиная с последнего слова первого предложения.

  • position(max_pos:=1, scope:=line) находит первое слово в каждой строке.

  • position(scope:=page, max_pos:=1) находит первое слово каждой страницы.

  • position(scope:=page, sentence(), max_snt:=1, mode:=backward) находит последнее предложение каждой страницы.