当前位置: 首页 > elasticsearch, 搜索 > 正文

elasticsearch Analyzer使用实例

1 星2 星3 星4 星5 星 (2 次投票, 评分: 5.00, 总分: 5)
Loading ... Loading ...
baidu_share

在lucene中我们用QueryParser方便的进行一句话进行分词。代码如下:

String fieldName = "text";
//检索内容
String text = "IK Analyzer李克强说,中巴是全天候战略合作伙伴。我今年5月访巴时,总理先生作为候任总理热情参与接待";
//实例化IKAnalyzer分词器
Analyzer analyzer = new IKAnalyzer(true);
QueryParser qp = new QueryParser(Version.LUCENE_40, fieldName,  analyzer);
qp.setDefaultOperator(QueryParser.AND_OPERATOR);
Query query = qp.parse(keyword);
System.out.println("Query = " + query);

在elasticsearch中,对一句话就行分词,我们一般用如下代码:

AnalyzeResponse analyzeResponse = client.admin().indices().prepareAnalyze("李克强说,中巴是全天候战略合作伙伴。我今年5月访巴时,总理先生作为候任总理热情参与接待").setAnalyzer("ik").execute().actionGet();
        System.out.println(analyzeResponse.getTokens().size());
        List<AnalyzeToken> list= analyzeResponse.getTokens();
        for(AnalyzeToken token : list){
        	System.out.println(token.getTerm());
        }

或者:使用AnalyzeRequestBuilder类型进行分词

final AnalyzeRequestBuilder requestBuilder = client.admin().indices().prepareAnalyze("test", "李克强说,中巴是全天候战略合作伙伴。我今年5月访巴时,总理先生作为候任总理热情参与接待");
        requestBuilder.setField("content");
        AnalyzeResponse response = requestBuilder.execute().actionGet();
        System.out.println(response.getTokens().size());
        List<AnalyzeToken> list= response.getTokens();
        for(AnalyzeToken token : list){
        	System.out.println(token.getTerm());
        }

以上两种区别为,前者进行分词不需要使用使用索引,或者需要。

本文固定链接: http://www.chepoo.com/elasticsearch-analyzer-apply-demo.html | IT技术精华网

elasticsearch Analyzer使用实例:等您坐沙发呢!

发表评论