2015-05-25 5 views
1

У меня есть:Elasticsearch.NET NEST Объект Initializer синтаксис для запроса выделения

 var result = _client.Search<ElasticFilm>(new SearchRequest("blaindex", "blatype") 
     { 
      From = 0, 
      Size = 100, 
      Query = titleQuery || pdfQuery, 
      Source = new SourceFilter 
      { 
       Include = new [] 
       { 
        Property.Path<ElasticFilm>(p => p.Url), 
        Property.Path<ElasticFilm>(p => p.Title), 
        Property.Path<ElasticFilm>(p => p.Language), 
        Property.Path<ElasticFilm>(p => p.Details), 
        Property.Path<ElasticFilm>(p => p.Id) 
       } 
      }, 
      Timeout = "20000" 
     }); 

И я пытаюсь добавить подсвеченный фильтр, но я не знаком с инициализатором объекта (OIS) Синтаксис C#. Я проверил NEST official pages и SO, но, похоже, не может возвращать какие-либо результаты специально для (OIS).

Я могу увидеть свойство Highlight в классе Nest.SearchRequest, но я недостаточно опытен (я думаю), чтобы просто построить то, что мне нужно оттуда - некоторые примеры и пояснения относительно того, как использовать маркер с OIS было бы жарко!

ответ

2

Это беглый синтаксис:

var response= client.Search<Document>(s => s 
    .Query(q => q.Match(m => m.OnField(f => f.Name).Query("test"))) 
    .Highlight(h => h.OnFields(fields => fields.OnField(f => f.Name).PreTags("<tag>").PostTags("</tag>")))); 

и это путем инициализации объекта:

var searchRequest = new SearchRequest 
{ 
    Query = new QueryContainer(new MatchQuery{Field = Property.Path<Document>(p => p.Name), Query = "test"}), 
    Highlight = new HighlightRequest 
    { 
     Fields = new FluentDictionary<PropertyPathMarker, IHighlightField> 
     { 
      { 
       Property.Path<Document>(p => p.Name), 
       new HighlightField {PreTags = new List<string> {"<tag>"}, PostTags = new List<string> {"</tag>"}} 
      } 
     } 
    } 
}; 

var searchResponse = client.Search<Document>(searchRequest); 

Мой класс документ:

public class Document 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
}