2013-07-23 2 views
1

Я использую C# NEST с ElasticSearch. Я могу запросить индекс Продукты и посмотреть их Name и CategoryName поля для матчей. Я также могу расширить запрос, используя Highlights.Совместимость NEST (ElasticSearch) Основные сведения о документах

Сейчас в моем ответе IQueryResponse У меня есть две коллекции: (1) .Documents и (2) .Highlights.

например: Рассмотрим поиск: «кошка», которая имеет 3 результаты поиска документа:

 
{ 
    { Name: "Cat product", CategoryName: "Category1" }, 
    { Name: "Some product", CategoryName: "Category2" }, 
    { Name: "Some product2", CategoryName: "Category3" } 
} 

Но теперь у меня есть 4 результаты подчеркивают:

 
{ 
    { Field: "name", Highlights: ['"<u>Cat</u> product"'] }, 
    { Field: "categoryName", Highlights: ['"<u>Cat</u>egory1"'] }, 
    { Field: "categoryName", Highlights: ['"<u>Cat</u>egory2"'] }, 
    { Field: "categoryName", Highlights: ['"<u>Cat</u>egory3"'] } 
} 

Они, кажется, никак не связаны друг другу. Как определить, где Highlight вещь принадлежит к которой принадлежит Document?

ответ

3

IQueryResponse также предоставляет .DocumentsWithMetaData типа IEnumerable<IHit<T>> где T является типом документа

В основном это развернутый вид результатов, как возвращение elasticsearch IHit<T> имеет много полезных свойств, таких как Highlights.

Я добавил результат DocumentId к классу выделения Highlight, так что независимо от того, как вы попадете на выделение, вы можете легко связать его с ударом.

Так что используйте .DocumentsWithMetaData. В следующем выпуске будет более логичный API для подсветки.

+0

Я уже пытался повторить свойство '.Hits', но это было невозможно. Затем я нашел свойство '.DocumentsWithMetaData', которое имело то, что мне нужно! Благодарю. – ReFocus

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