Elasticsearch в Сделать смещение выделенных фрагментов

Можно ли узнать характер позиции каждого выделенного фрагмента? Мне нужно сопоставить выделенный текст обратно в исходный документ и имеющих характер позиции позволят.

Например:

curl "localhost:9200/twitter/tweet/_search?pretty=true" -d '{
    "query": {
        "query_string": {
            "query": "foo"
        }
    },
    "highlight": {
        "fields": {
            "message": {"number_of_fragments": 20}
        }
    }    
}'

возвращает эту highglight:

"highlight" : {
    "message" : [ "some <em>foo</em> text" ]
 }

Если поле сообщения в найденном документе были:

"Here is some foo text"

есть ли способ, чтобы знать, что фрагмент начинается в 8 и заканчивается Чаре в Чаре 21 соответствующего поля?

Зная начальную и конечную смещение подобрано маркер было бы хорошо для меня, возможно, есть способ получить доступ к этой информации через script_fields? (Этот вопрос показано, как получить жетоны, но не компенсирует).

Поле на "сообщение" есть:

"term_vector" : "with_positions_offsets",
"index_options" : "positions" 
Комментарии к вопросу (5)
Решение

Клиентский подход на самом деле стандартная практика.

Мы обсуждали добавление смещения, но боятся, что это приведет к еще большей путанице. За смещений относящиеся к Java's в кодировке UTF-16 кодировки, которые, хотя они могут быть использованы для расчета фрагментов от $Лан, это's путь более простой для разбора ответа текст для разделителей, которые вы указали.

Комментарии (1)

Мы закончили тем, расширяя исходный текст такой:

У некоторых[1] Текст[2] по[3] [4]

Затем мы определим собственный анализатор с:

"char_filter": {
        "remove_tags": {
          "type": "pattern_replace",
          "pattern": "\\[[0-9]+\\]",
          "replacement": ""

Сейчас в выделенных фрагментов мы получаем тегов местоположения и мы знаем, где в тексте они появляются. Некрасиво, но работает!

Я дал полный ответ здесь

Комментарии (0)