业务需求,需要知道查询关键词的分词集合
可以使用es的分词查询,获取结果
请求url(POST):
http://localhost:9200/_analyze?pretty=true
请求参数(JSON):
{
"analyzer":"ik_max_word",
"text": "咒术回站"
}
请求结果:
{
"tokens": [
{
"token": "咒",
"start_offset": 0,
"end_offset": 1,
"type": "CN_CHAR",
"position": 0
},
{
"token": "术",
"start_offset": 1,
"end_offset": 2,
"type": "CN_CHAR",
"position": 1
},
{
"token": "回",
"start_offset": 2,
"end_offset": 3,
"type": "CN_CHAR",
"position": 2
},
{
"token": "站",
"start_offset": 3,
"end_offset": 4,
"type": "CN_CHAR",
"position": 3
}
]
}
Java版:
RestTemplate restTemplate = new RestTemplate();
String url = "http://localhost:9200/_analyze?pretty=true";
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
Map<String, String> map = new HashMap<>();
map.put("analyzer", "ik_max_word");
map.put("text", key);
HttpEntity<String> httpEntity = new HttpEntity<>(JSON.toJSONString(map), headers);
ResponseEntity<String> result = restTemplate.postForEntity(url, httpEntity, String.class);
JSONObject jsonObject = JSONObject.parseObject(result.getBody());
JSONArray tokens = jsonObject.getJSONArray("tokens");
if (!tokens.isEmpty() && tokens.size() > 0) {
for (int i = 0, len = tokens.size(); i < len; i++) {
JSONObject word = tokens.getJSONObject(i);
System.out.println(word.getString("token"));
}
}