2013-08-21 31 views
5

Tôi đã thu được kết quả và đánh dấu thành công bằng cách sử dụng Nest nhưng nếu tôi bao gồm hai trường để tìm kiếm phần nổi bật, nó chỉ sử dụng kết quả cuối cùng trong việc xây dựng truy vấn elasticsearch. ví dụ. sau đâyNEST (elasticsearch) Đánh dấu trong nhiều trường

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

có nghĩa là tôi chỉ nhận nổi bật được trả lại từ trường "Tóm tắt". Nếu tôi truy vấn elasticsearch trực tiếp với truy vấn tương đương, tôi có thể truy xuất các điểm nổi bật từ cả hai trường. ví dụ:

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

Có thể thực hiện việc này với Nest không? Tôi có làm điều gì sai?

Trả lời

8

Mỗi trường được đánh dấu cần có ".OnField" riêng biệt.

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

Xem ví dụ khác here.

Các vấn đề liên quan