Выделение в функции Percolate написано в NEST Elasticsearch
У меня есть перколятная функция, написанная на NEST (C#). Я хочу включить функцию подсветки, но она не сработала. Перколятор работает нормально, но выделение ничего не возвращало, и ничего не найдено в документации NEST. Любая помощь очень ценится.
var searchResponseDoc = client.Search<PercolatedQuery>(s => s
.Query(q => q
.Percolate(f => f
.Field(p => p.Query)
.DocumentType<Document>() //I have a class called Document
.Document(myDocument))) // myDocument is an object of type Document
.Highlight(h => h
.Fields(f => f
.Field(p => p.Query))
.PreTags("<em>")
.PostTags("</em>")
.FragmentSize(20)));
1 ответ
Решение
Документация Elasticsearch дает хороший пример того, как использовать перколят-запросы с подсветкой. Фильтры запросов с выделением работают немного по-другому в том, что Fields()
в Highlight()
должны быть поля в типе документа, которые будут выделены.
Например, учитывая
public class Document
{
public string Content { get; set; }
}
Фильтр с выделением может выглядеть так
var searchResponseDoc = client.Search<PercolatedQuery>(s => s
.Query(q => q
.Percolate(f => f
.Field(p => p.Query)
.DocumentType<Document>() //I have a class called Document
.Document(myDocument) // myDocument is an object of type Document
)
)
.Highlight(h => h
.Fields(f => f
.Field(Infer.Field<Document>(ff => ff.Content))
)
.PreTags("<em>")
.PostTags("</em>")
.FragmentSize(20)
)
);
Infer.Field<T>()
используется, чтобы получить имя content
поле на Document
как Highlight<T>()
строго типизирован к типу ответа, в этом случае, PercolatedQuery
,