有些业务需要得到分词结果,网上查了很多资料:
使用JAVA的最多是这种方法elasticsearch获取分词结果_【模棱博客】 – Java技术博客-CSDN博客
这是一 种比较老版本的使用方法,升级之后ElasticsearchTemplate已经不建议使用。
经过研究和查找了比较多的资料,找到了Analyze API | Java REST Client [7.15] | Elastic。文档说的很清楚,就不多说了。下面是我升级使用的方法:
@Autowired private ElasticsearchRestTemplate elasticsearchRestTemplate; @Test public void test(){ AnalyzeResponse analyzeResponse = elasticsearchRestTemplate.execute( new ElasticsearchRestTemplate.ClientCallback() { @Override public AnalyzeResponse doWithClient(RestHighLevelClient client) throws IOException { AnalyzeRequest analyzeRequest = AnalyzeRequest.withGlobalAnalyzer("ik_max_word", "中国力量"); return client.indices().analyze(analyzeRequest, RequestOptions.DEFAULT); } } ); analyzeResponse.getTokens().forEach(analyzeToken -> { System.out.println(analyzeToken.getTerm()); }); // 分词结果: // 中国力量 // 中国 // 国力 // 力量 }
另外也可以用HTTP请求,直接取得分词结果:
get http://localhost:9200/_analyze
参数:
{
"analyzer":"ik_max_word",
"text":"中国力量"
}
analyzer: 分词器名称
text:要查询的词
返回结果:
{
"tokens": [
{
"token": "中国力量",
"start_offset": 0,
"end_offset": 4,
"type": "CN_WORD",
"position": 0
},
{
"token": "中国",
"start_offset": 0,
"end_offset": 2,
"type": "CN_WORD",
"position": 1
},
{
"token": "国力",
"start_offset": 1,
"end_offset": 3,
"type": "CN_WORD",
"position": 2
},
{
"token": "力量",
"start_offset": 2,
"end_offset": 4,
"type": "CN_WORD",
"position": 3
}
]
}
可以看到“中国力量”被分成了“中国力量”、“中国”、“国力”、“力量”
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)