1. @Override
    2. public String spellingCorrection(SpellingCorrectionRequest request) throws IOException {
    3. // 1、构建 PhraseSuggestion 条件
    4. PhraseSuggestionBuilder phraseSuggestionBuilder = new PhraseSuggestionBuilder(request.getFieldName());
    5. phraseSuggestionBuilder.text(request.getText());
    6. phraseSuggestionBuilder.size(1);
    7. SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    8. searchSourceBuilder.sort(new ScoreSortBuilder().order(SortOrder.DESC));
    9. searchSourceBuilder.suggest(new SuggestBuilder().addSuggestion(MY_SUGGEST, phraseSuggestionBuilder));
    10. // 2、封装搜索请求
    11. SearchRequest searchRequest = new SearchRequest();
    12. searchRequest.indices(request.getIndexName());
    13. searchRequest.source(searchSourceBuilder);
    14. // 3、查询elasticsearch
    15. SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
    16. // 4、获取响应中纠错后的词
    17. PhraseSuggestion phraseSuggestion = searchResponse.getSuggest().getSuggestion(MY_SUGGEST);
    18. List<PhraseSuggestion.Entry.Option> options = phraseSuggestion.getEntries().get(0).getOptions();
    19. return Optional.ofNullable(options).filter(e -> !e.isEmpty()).map(e -> e.get(0)).map(e -> e.getText().string()).orElse("");
    20. }