Java 中的 Elasticsearch:SearchHit 片段被缩短
Elasticsearch in Java: SearchHit fragments get shortened
我使用 Elasticsearch 中已经包含的突出显示。它工作正常。例如,如果我有下一个 "words" 索引:
- 很长的工作,就是weryweeylongf
- tes!tr%31=!"$:_ae 测试!"daca214xx
如果我搜索 -> that 。结果如下 -> verylongwork that isweryweeylongf 。包括粗体部分。
但是如果我搜索 -> test 。结果是 -> $:_ae test !" .
所以片段 gests splited/shortened。
可能跟特殊字符有关。搜索时我使用 QueryParser.escape() 来转义它们。
可能是什么问题?
编辑:
另外,如果我搜索 tes,结果将是两个片段 -> tes!tr 和 $:_ae test !"
所以 "problem" 似乎是我设置了默认片段数 (5)。就我而言,这没有任何意义,因为我正在搜索较短的字符串。
所以解决方案是:
final HighlightBuilder.Field field = new HighlightBuilder.Field(fieldToHighlight.getName());
field.preTags("<strong>");
field.postTags("</strong>");
field.numOfFragments(0);
只需将 numOfFragments 设置为 0 即可。
我使用 Elasticsearch 中已经包含的突出显示。它工作正常。例如,如果我有下一个 "words" 索引:
- 很长的工作,就是weryweeylongf
- tes!tr%31=!"$:_ae 测试!"daca214xx
如果我搜索 -> that 。结果如下 -> verylongwork that isweryweeylongf 。包括粗体部分。 但是如果我搜索 -> test 。结果是 -> $:_ae test !" .
所以片段 gests splited/shortened。
可能跟特殊字符有关。搜索时我使用 QueryParser.escape() 来转义它们。
可能是什么问题?
编辑: 另外,如果我搜索 tes,结果将是两个片段 -> tes!tr 和 $:_ae test !"
所以 "problem" 似乎是我设置了默认片段数 (5)。就我而言,这没有任何意义,因为我正在搜索较短的字符串。 所以解决方案是:
final HighlightBuilder.Field field = new HighlightBuilder.Field(fieldToHighlight.getName());
field.preTags("<strong>");
field.postTags("</strong>");
field.numOfFragments(0);
只需将 numOfFragments 设置为 0 即可。