Объяснение структуры многословных синонимов Elasticsearch

Я работаю с функцией synonym_graph в ElasticSearch, и, похоже, она работает нормально.

Я пытался визуально понять, как работает новый synonym_graph и разбивает слова, тестируя анализатор напрямую, используя

GET my_index/_analyze
{
  "text": "I really love eating lots and lots of fried cheese",
  "analyzer": "my_analyzer"
}

И мне было интересно, что означает вывод анализатора.

В этом примере термин «жареный сыр» имеет несколько определенных синонимов, некоторые из них состоят из нескольких слов, а некоторые — из одного слова.

fried cheese => fried cheese, mozzarellasticks, Queso Frito, cheesecurd, friedmozzarella

Выход анализатора

{
  "tokens" : [
    {
      "token" : "i",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "<ALPHANUM>",
      "position" : 0
    },
    {
      "token" : "realli",
      "start_offset" : 2,
      "end_offset" : 8,
      "type" : "<ALPHANUM>",
      "position" : 1
    },
    {
      "token" : "love",
      "start_offset" : 9,
      "end_offset" : 13,
      "type" : "<ALPHANUM>",
      "position" : 2
    },
    {
      "token" : "eat",
      "start_offset" : 14,
      "end_offset" : 20,
      "type" : "<ALPHANUM>",
      "position" : 3
    },
    {
      "token" : "lot",
      "start_offset" : 21,
      "end_offset" : 25,
      "type" : "<ALPHANUM>",
      "position" : 4
    },
    {
      "token" : "lot",
      "start_offset" : 30,
      "end_offset" : 34,
      "type" : "<ALPHANUM>",
      "position" : 6
    },
    {
      "token" : "friedchees",
      "start_offset" : 38,
      "end_offset" : 50,
      "type" : "SYNONYM",
      "position" : 7,
      "positionLength" : 4
    },
    {
      "token" : "fri",
      "start_offset" : 38,
      "end_offset" : 50,
      "type" : "SYNONYM",
      "position" : 7
    },
    {
      "token" : "mozzarellastick",
      "start_offset" : 38,
      "end_offset" : 50,
      "type" : "SYNONYM",
      "position" : 7,
      "positionLength" : 4
    },
    {
      "token" : "queso",
      "start_offset" : 38,
      "end_offset" : 50,
      "type" : "SYNONYM",
      "position" : 7,
      "positionLength" : 2
    },
    {
      "token" : "cheesecurd",
      "start_offset" : 38,
      "end_offset" : 50,
      "type" : "SYNONYM",
      "position" : 7,
      "positionLength" : 4
    },
    {
      "token" : "friedmozzarella",
      "start_offset" : 38,
      "end_offset" : 50,
      "type" : "SYNONYM",
      "position" : 7,
      "positionLength" : 4
    },
    {
      "token" : "fri",
      "start_offset" : 38,
      "end_offset" : 43,
      "type" : "<ALPHANUM>",
      "position" : 7,
      "positionLength" : 3
    },
    {
      "token" : "chees",
      "start_offset" : 38,
      "end_offset" : 50,
      "type" : "SYNONYM",
      "position" : 8,
      "positionLength" : 3
    },
    {
      "token" : "frito",
      "start_offset" : 38,
      "end_offset" : 50,
      "type" : "SYNONYM",
      "position" : 9,
      "positionLength" : 2
    },
    {
      "token" : "chees",
      "start_offset" : 44,
      "end_offset" : 50,
      "type" : "<ALPHANUM>",
      "position" : 10
    }
  ]
}

Я пытаюсь понять параметры токенов синонимов в этом результате. Возьмем в качестве примера синонимы «Queso Frito».

{
      "token" : "frito",
      "start_offset" : 38,
      "end_offset" : 50,
      "type" : "SYNONYM",
      "position" : 9,
      "positionLength" : 2
    }
{
      "token" : "queso",
      "start_offset" : 38,
      "end_offset" : 50,
      "type" : "SYNONYM",
      "position" : 7,
      "positionLength" : 2
    }

Что означают все прилагаемые параметры? "start_offset", "end_offset", "position", "positionLength"


person Lior Magen    schedule 12.09.2019    source источник


Ответы (1)


Что означают все прилагаемые параметры? "start_offset", "end_offset", "position", "positionLength"

start_offset — это начало токена, т. е. символ 38 (fried начинается с символа 38 во всем предложении)

end_offset — это конец токена, т. е. символ 50 (cheese заканчивается на символе 50 во всем предложении)

position — это позиция токена. Обратите внимание, как он продолжает увеличиваться от i до 0 и так далее.

positionLength — это количество позиций, на которые распространяется токен.

Документации не так много. только самое близкое это найдено, это из эластичные документы.

token.position (int, read-only)
        The position of the current token
token.positionIncrement (int, read-only)
         The position increment of the current token
token.positionLength (int, read-only)
         The position length of the current token
token.startOffset (int, read-only)
         The start offset of the current token
token.endOffset (int, read-only)
         The end offset of the current token

Дополнительное чтение, если хотите.

person Polynomial Proton    schedule 12.09.2019