Elasticsearch: как хранить векторы терминов

Я работаю над проектом, в котором я активно использую Elasticsearch и использую запрос moreLikeThis для реализации некоторых функций. Официальная документация для запроса MLT гласит следующее:

Чтобы ускорить анализ, он может помочь хранить векторы терминов во время индексации, но за счет использования диска.

В разделе ** Как это работает *. Теперь идея состоит в том, чтобы настроить отображение, чтобы сохранить предварительно рассчитанные векторы терминов. Проблема в том, что из документации неясно, как именно это должно быть сделано. С одной стороны, в документации MLT они предоставляют и пример сопоставления, который выглядит следующим образом:

curl -s -XPUT 'http://localhost:9200/imdb/' -d '{
  "mappings": {
    "movies": {
      "properties": {
        "title": {
          "type": "string",
          "term_vector": "yes"
         },
         "description": {
          "type": "string"
        },
        "tags": {
          "type": "string",
          "fields" : {
            "raw": {
              "type" : "string",
              "index" : "not_analyzed",
              "term_vector" : "yes"
            }
          }
        }
      }
    }
  }
}

С другой стороны, в документации по Term Векторы, они предоставляют отображение в разделе Пример 1, которое выглядит следующим образом

curl -s -XPUT 'http://localhost:9200/twitter/' -d '{
  "mappings": {
    "tweet": {
      "properties": {
        "text": {
          "type": "string",
          "term_vector": "with_positions_offsets_payloads",
          "store" : true,
          "index_analyzer" : "fulltext_analyzer"
         },
         "fullname": {
          "type": "string",
          "term_vector": "with_positions_offsets_payloads",
          "index_analyzer" : "fulltext_analyzer"
        }
      }
    }
    ....

Это должно create an index that stores term vectors, payloads etc.

Теперь вопрос: какое из отображений следует использовать? Это ошибка в документации или я что-то упустил?

1 ответ

Решение

Вы правы, в текущей версии документов это явно не упоминается, однако в следующих версиях документов 2.0 есть более подробное объяснение.

Векторы терминов содержат информацию о терминах, полученных в процессе анализа, в том числе:

  • список терминов.
  • положение (или порядок) каждого термина.
  • смещения начального и конечного символов, сопоставляющие термин с его источником в исходной строке.

Эти векторы терминов могут быть сохранены, чтобы их можно было найти для конкретного документа.

term_vector установка принимает:

  • no: Векторы терминов не сохраняются. (дефолт)
  • yes: Только термины в поле хранятся
  • with_positions: Сроки и позиции сохраняются
  • with_offsets: Термины и смещения символов сохраняются
  • with_positions_offsets: Термины, позиции и смещения символов сохраняются
Другие вопросы по тегам