elasticsearch中的Suggest用法

1、搜索自动补全(CompletionSuggestionBuilder)

    搜索自动补全,可以使用CompletionSuggestionBuilder类来处理。如果要使用CompletionSuggestionBuilder来做搜索提示的话需要在定义mapping的时候制定下字段的格式内容。

{
    "expJob":{
        "type":"completion",
        "analyzer":"ik_smart",
        "search_analyzer":"ik_smart",
        "payloads":true,
        "preserve_separators" : false,//那么建议将忽略空格之类的分隔符。
        "preserve_position_increments" : false,//如果建议项的第一个词使用的是停用词,并且我们使用了过滤停用词的分析器,需要把该项设置成false
    }
}

java API

 Client client = ElasticClientFactory.getClient();
        SearchRequestBuilder req = client.prepareSearch(index);
        req.setQuery(QueryBuilders.matchAllQuery());
        CompletionSuggestionBuilder csfb = new CompletionSuggestionBuilder("sug").field(field).text(value).size(100);//sug是提示器的名字,可以有多个suggest
        req.addSuggestion(csfb);
        SearchResponse suggestResponse = req.execute().actionGet();
        List> results = suggestResponse.getSuggest().getSuggestion("sug").getEntries();
        System.out.println(JSON.toJSONString(suggestResponse));
        for (Suggest.Suggestion.Entry op : results) {
            Text text = op.getText();
            System.out.println(text.toString());
            List options = op.getOptions();
            for (Suggest.Suggestion.Entry.Option pp : options) {
                System.out.println("\t" + pp.getText() + "==>" + pp.getScore());
            }
        }
2、错别词纠正(TermSuggestionBuilder)

SearchResponse response = client.prepareSearch("wikipedia")
	.setQuery(QueryBuilders.matchAllQuery())
	.addSuggestion(new TermSuggestionBuilder("first_suggestion")
	.text("graphics designer")
	.field("_all")).execute().actionGet();
 for( Entry entry : response.getSuggest().getSuggestion("first_suggestion").getEntries()) {
 System.out.println("Check for: " + entry.getText() + ". Options:")
 for( Option option : entry.getOptions()){
	System.out.println("\t" + option.getText());
 }
}
但是对中文效果不好。

3、短语错别纠正(PhraseSuggestionBuilder)

如果想对短语进行提示的胡可以使用PhraseSuggestionBuilder来做,PhraseSuggestionBuilder在TermSuggestionBuilder的基础上添加了额外的短语计算逻辑,从而可以返回完整的短语检疫而不是单个的词项建议。用法和TermSuggestionBuilder一样。

你可能感兴趣的:(elasticsearch)