在用 NEST Elasticsearch 编写的 Percolate 函数中突出显示
Highlighting in Percolate function written in NEST Elasticsearch
我有一个用 NEST (c#) 编写的渗透函数。我想启用突出显示功能但没有用。过滤器工作正常,但突出显示没有 return 任何东西,在 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)));
Elasticsearch documentation gives a good example of how to use percolate queries with highlighting。带有突出显示的过滤查询的工作方式略有不同,因为 Highlight()
中的 Fields()
应该是文档类型上要突出显示的字段。
例如给定
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>()
用于获取 Document
上 content
字段的名称,因为 Highlight<T>()
是响应类型的强类型,在本例中,PercolatedQuery
.
我有一个用 NEST (c#) 编写的渗透函数。我想启用突出显示功能但没有用。过滤器工作正常,但突出显示没有 return 任何东西,在 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)));
Elasticsearch documentation gives a good example of how to use percolate queries with highlighting。带有突出显示的过滤查询的工作方式略有不同,因为 Highlight()
中的 Fields()
应该是文档类型上要突出显示的字段。
例如给定
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>()
用于获取 Document
上 content
字段的名称,因为 Highlight<T>()
是响应类型的强类型,在本例中,PercolatedQuery
.