2013-08-21 87 views
5

我已經成功獲取了使用Nest的結果和高亮顯示,但是如果我包含兩個要搜索高光的字段,它只會使用彈性搜索查詢的最後一個字段。例如以下NEST(elasticsearch)在多個字段中突出顯示

.Query(qry => qry 
    .QueryString(qs => qs 
     .Query(qString) 
    ) 
) 
.Highlight(h => h 
    .PreTags("<b>") 
    .PostTags("</b>") 
    .OnFields(f => f 
     .OnField("Title") 
     .OnField("Summary") 
    ) 
) 

意味着我只從「摘要」字段中返回高亮區。如果我用等價查詢直接查詢elasticsearch,我可以從兩個字段中檢索高亮部分。 例如

{ 
    "query": { 
    "query_string": { 
     "query": "apple" 
    } 
    }, 
    "highlight": { 
    "pre_tags": ["<b>"], 
    "post_tags": ["</b>"], 
    "fields": { 
     "Title": {}, 
     "Summary": {} 
    } 
    } 
} 

是否可以與Nest做到這一點?難道我做錯了什麼?

回答

8

每個突出顯示的字段都需要單獨的「.OnField」。

.Highlight(h => h 
    .PreTags("<b>") 
    .PostTags("</b>") 
    .OnFields(
     f => f.OnField("Title"), 
     f => f.OnField("Summary") 
    ) 
) 

查看另一個例子here