elasticsearch Analyzer使用实例
关键字: elasticsearch elasticsearch Analyzer elasticsearch AnalyzeRequestBuilder elasticsearch AnalyzeResponse 代码实例
在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技术精华网