2016-01-06 3 views
2

Как я могу получить Elastic Search, чтобы выделить только слова, которые привели к возврату документа?ElasticSearch: выделяет каждое слово в фразе запроса

У меня есть следующий индексировать

{ 
    "mappings": { 
    "document": { 
     "properties": { 
     "content": { 
      "type": "string", 
      "fields": { 
      "english": { 
       "type": "string", 
       "analyzer": "english" 
      } 
      } 
     } 
     } 
    } 
    } 
} 

Пусть говорят, что я индексировали:

Ядерная энергетика является использование ядерных реакций, которые высвобождают ядерной энергии [5] для получения тепла, которое наиболее часто используется в паровых турбинах для производства электроэнергии на атомной электростанции. Термин включает в себя ядерное деление, ядерный распад и ядерный синтез. В настоящее время ядерного деления элементов в актинидах периодическая таблица песть подавляющее большинство ядерной энергии в прямой службе человечества , с процессами ядерного распада, в первую очередь в виде геотермальной энергии, а также радиоизотопные термоэлектрические генераторов, в нишевых целях, составляющих остальное.

И поиск «ядерные элементы» ~ 2

Я только хочу «деление ядер элементов» или части «деление ядер элементов», которые будут выделены, но каждое появление ядерного теперь подсвечиваются.

Это мой запрос, если это помогает:

{ 
    "fields": [ 
    ], 
    "query": { 
    "query_string": { 
     "query": "\"nuclear elements\"~2", 
     "fields": [ 
     "content.english" 
     ] 
    } 
    }, 
    "highlight": { 
    "pre_tags": [ 
     "<em class='h'>" 
    ], 
    "post_tags": [ 
     "</em>" 
    ], 
    "fragment_size": 500, 
    "number_of_fragments": 20, 
    "fields": { 
     "content.english": {} 
    } 
    } 
} 
+0

Я не могу воспроизвести это на ES 1.7 и ES 2.0, какую версию ES вы используете? – ChintanShah25

+0

Я попытался переустановить ES и все еще имею ту же проблему. Я использую 2.1.1 с lucene_version 5.3.1. Вы создали тот же самый индекс и используете тот же запрос? – user568327

+1

Я думаю, что это может быть связано с [этой проблемой] (https://github.com/elastic/elasticsearch/issues/15291), это [PR] (https://github.com/elastic/elasticsearch/pull/15516), который был объединен. Я думаю, что он должен дать правильные результаты с 2.1.2 и 2.2.0 – ChintanShah25

ответ

2

Существует в ES 2.1, которая была вызвана из-за this changehighlighting bug. Это было устранено этим Pull Request.

Согласно ES разработчика

Это ошибка, которую я представил в # 13239, думая, что различия обусловлены изменениями в Lucene: extractUnknownQuery также вызывается при экстракции пядь уже удалось, поэтому мы должен только упасть обратно в Weight.extractTerms, если еще не было выделено пролетов.

Работает в более ранних версиях до 2.0 и будет работать как ожидается в будущих версиях.

Смежные вопросы