我正在使用弹性搜索和Java API 1.7.1版。我对边界字符有一个简单的突出显示问题 这里我用
设置源内容XContentBuilder source = jsonBuilder().startObject();
source.field(PROPERTY_BOOK_ID, bookId)
.field(PROPERTY_CONTENT, parsedContent)
.field("term_vector", "with_positions_offsets")
.field(PROPERTY_FILENAME, file.getName())
.field(PROPERTY_ATTACHMENT, Base64.encodeBase64String(FileUtils.readFileToByteArray(file)));
根据文档边界字符使用term_vector"," with_positions_offsets
但是当我用边界字符查询弹性搜索时,它给出了错误的响应。这是我的搜索查询与搜索内容"诗"
QueryBuilder query = boolQuery().must(QueryBuilders.textPhraseQuery(PROPERTY_BOOK_ID, bookId))
.must(QueryBuilders.queryStringQuery("*"+searchTerm+"*"));
Map<String, Object> highlighterOptions = new HashMap<>();
highlighterOptions.put("boundary_chars", "s.,!?\\t\\n\b");
final SearchResponse response = searchClientService.getClient()
.prepareSearch(INDEX_NAME).setTypes(INDEX_TYPE)
.setHighlighterQuery(query)
.addHighlightedField(PROPERTY_CONTENT)
.setHighlighterOptions(highlighterOptions)
.setExplain(true)
.setSize(5000)
.setFrom(0)
.setHighlighterBoundaryMaxScan(10)
.setHighlighterFragmentSize(50)
.setHighlighterNumOfFragments(5000)
.execute().actionGet();
结果: 0)英国文学诗集,有领导诗歌
1)你会
在GCSE期间欣赏这些诗歌
2)课程以及以后的生活。
很多诗都涉及
3)。有些诗歌会反映出你自己的想法
4)你充分利用诗歌和GCSE。它
5)为GCSE写诗和比较诗歌
6)你今天。
诗歌过去和现在 - AQA预期:
0)英国文学诗集,有领导诗歌
1)在GCSE期间欣赏这些诗歌
2)许多诗都涉及
3)有些诗歌会反映出你自己的想法
4)你充分利用了诗歌和GCSE。
5)为GCSE写诗和比较诗歌
6)过去和现在的诗--AQA在查询或索引文档时,我是否遗漏了某些内容?或者我是否误解了弹性搜索返回摘录的边界字符概念会超出预期结果?
提前致谢