2013-08-21 10 views
5

Ich habe erfolgreich Ergebnisse und Markierungen mit Nest erhalten, aber wenn ich zwei Felder für die Suche nach Markierungen einschließe, wird nur die letzte in der Konstruktion der elasticsearch Abfrage verwendet. z.B. die folgendenNEST (elasticsearch) Hervorhebung in mehreren Feldern

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

bedeutet, dass ich nur Highlights aus dem Feld "Zusammenfassung" zurückgegeben. Wenn ich elasticsearch direkt mit der entsprechenden Abfrage abfrage, kann ich Highlights aus beiden Feldern abrufen. z.B.

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

Ist es möglich, dies mit Nest zu tun? Mache ich etwas falsch?

Antwort

8

Jedes hervorgehobene Feld benötigt ein separates ".OnField".

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

Siehe ein anderes Beispiel here.

Verwandte Themen