我用这个查询代码不能得到高亮的字段,有什么想法吗,我用的是SDE4.0.0.RC2,我想用@Query。
@Query("{\n" +
" \"multi_match\": {\n" +
" \"query\": \"?0\",\n" +
" \"fields\": [\n" +
" \"code^2\",\n" +
" \"name\"\n" +
" ],\n" +
" \"analyzer\": \"standard\"\n" +
" }\n" +
"}")
@Highlight(
fields = @HighlightField(
name = "['code','name']"),
parameters = @HighlightParameters(
preTags = "<strong>",
postTags = "</strong>",
fragmentSize = 500,
numberOfFragments = 3
)
)
List<CodeNames> findAllByCodeAndNameOrderByName(String code, Pageable pageable);
你需要在一个单独的注释参数中指定每个高亮区域。
@Query("{\n" +
" \"multi_match\": {\n" +
" \"query\": \"?0\",\n" +
" \"fields\": [\n" +
" \"code^2\",\n" +
" \"name\"\n" +
" ],\n" +
" \"analyzer\": \"standard\"\n" +
" }\n" +
"}")
@Highlight(
fields = {
@HighlightField(name = "code"),
@HighlightField(name = "name")
},
parameters = @HighlightParameters(
preTags = "<strong>",
postTags = "</strong>",
fragmentSize = 500,
numberOfFragments = 3
)
)
List<CodeNames> findAllByCodeAndNameOrderByName(String code, Pageable pageable);
编辑。
除此之外,你还必须改变你的方法的返回类型。
List<SearchHit<CodeNames>> findAllByCodeAndNameOrderByName(String code, Pageable pageable);
或者
SearchHits<CodeNames> findAllByCodeAndNameOrderByName(String code, Pageable pageable);
的高亮值,以便能够从返回的 SearchHit
见 https:/docs.spring.iospring-dataelasticsearchdocs4.0.0.RC2referencehtml#elasticsearch.operations.searchresulttypes。