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
: Термины, позиции и смещения символов сохраняются