2013-07-23 56 views
1

我正在使用C#NEST和ElasticSearch。我可以查询产品索引,并在其NameCategoryName字段中查找匹配项。我还可以使用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也暴露IEnumerable<IHit<T>>类型,其中T是在文档

这基本上结果作为由elasticsearch IHit<T>返回的展开视图具有许多有用的特性,如Highlights的类型​​。

我已经为高亮类Highlight添加了一个DocumentId结果,因此无论您如何获得高光,您都可以轻松地将其与背景相关联。

因此,现在使用​​,下一个版本将具有更加合理的高亮度API。

+0

我已经试图迭代'.Hits'属性,但这是不可能的。然后我找到了'.DocumentsWithMetaData'属性,它有我需要的!谢谢。 – ReFocus