Java 中的 Elasticsearch:SearchHit 片段被缩短

Elasticsearch in Java: SearchHit fragments get shortened

我使用 Elasticsearch 中已经包含的突出显示。它工作正常。例如,如果我有下一个 "words" 索引:

  1. 很长的工作,就是weryweeylongf
  2. 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 即可。