Я думаю, что вам нужно, чтобы выделить данные, которые сделали удар по вашему запросу. Выделение функциональности elasticsearch фактически маркирует текст из каждого результата поиска, чтобы пользователь мог понять, почему документ соответствует запросу. Отмеченный текст возвращается в ответе.
Пожалуйста, обратитесь к elasticsearch documentation, чтобы понять, как это работает. Обратитесь к Nest Documentation, чтобы узнать, как вы можете реализовать его с помощью библиотеки Nest.
Например, с помощью elasticsearch API представить себе следующий пример:
GET /someIndex/someType/_search
{
"query" : {
"match_phrase" : {
"about" : "rock climbing"
}
},
"highlight": {
"fields" : {
"about" : {}
}
}
}
То же самое с гнездом:
var result = _client.Search<someIndex>(s => s
.Query(q => q
.MatchPhrase(qs => qs
.OnField(e => e.about)
.Query("rock climbing")
)
)
.Highlight(h => h
.OnFields(f => f
.OnField(e => e.about)
)
)
);
Ответ будет иметь форму ниже для каждого результата поиска (обратите внимание на выделить часть)
"_score": 0.23013961,
"_source": {
"first_name": "John",
"last_name": "Smith",
"age": 25,
"about": "I love to go rock climbing",
"interests": [ "sports", "music" ]
},
"highlight": {
"about": [
"I love to go <em>rock</em> <em>climbing</em>"
]
}
Thanks Manolis, ваш комментарий был очень полезным. – Jack