Не удается заставить Highlights работать с ElasticSearch C# NEST

Я пытаюсь вернуть основные моменты из моих поисков, используя приведенный ниже код. Несмотря на то, что я пробовал всевозможные вещи, коллекция Highlights в результате всегда пуста.

Использование сервера ElasticSearch 2.3.1 и NEST 2.3.0.

results = _client.Search<dynamic>( d =>
            d.AllIndices()
            .AllTypes()
            .Query( q => q.QueryString( s => s.Query( query ) ) )
            .Highlight(h => 
                 h.Fields( f => 
                    f.Field( "*" ).PreTags("<em>").PostTags("</em>")
                 )
             )
         );

person Jon Edmiston    schedule 13.05.2016    source источник
comment
Взгляните на примеры использования выделения — elastic.co/guide/en/elasticsearch/client/net-api/current/   -  person Russ Cam    schedule 15.05.2016
comment
У вас есть краткий пример, чтобы воспроизвести то, что вы видите?   -  person Russ Cam    schedule 17.05.2016


Ответы (2)


По моему опыту, чтобы подсветчик возвращал данные с запросом поля *, вам также необходимо предоставить ему копию запроса в его собственном запросе выделения.

Извините за нативный формат, но вот пример, который выделит основные моменты из шаблона поля *:

  "fields": {
     "*": {
        "highlight_query": {
           "query_string": {
              "query": "same as string query value"
           }
        }
     }
  }
person Dexterama    schedule 16.05.2016

Я думаю, это потому, что вы используете строку запроса. Если вы запрашиваете несколько полей, вы можете изменить это на MultipleMatch или, если вы просто запрашиваете 1 поле, вы можете использовать Match. Просто обратите внимание на специальные символы. Допустим, вы делаете запрос в поле 1, но ключевое слово запроса (ключевое слово поиска) выглядит так: «ваше ключевое слово идет сюда», я не думаю, что у вас есть какие-либо основные моменты на этом или, возможно, вы получаете неправильный результат.

person KarlM    schedule 07.10.2016