基于web地址的方式实现ik分词热更新。
操作系统:win 11
es version:8.6.2
ik version:8.6.2
1、创建web服务,并提供ik查询词库接口
- 编写分词http url代码,返回自定义分词内容
- 分词词库数据来自业务需求,存储于业务DB,便于维护
- 多个分词按行输出,中文分词编码UTF-8
- http url接口返回内容编码UTF-8
- 设置返回header头信息 ETag 为自定义词库的hash值;
- 设置返回header头信息 Last-Modified 为自定义词库最新更新的时间
ETag和Last-Modified任意一个变化就会ik就会更新词库。
package com.david.ikremotedict.controller;
import com.david.ikremotedict.domain.IkExtDict;
import com.david.ikremotedict.domain.IkStopDict;
import com.david.ikremotedict.service.IkExtDictService;
import com.david.ikremotedict.service.IkStopDictService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.List;
/**
* @authar David
* @Date 2025/4/1
* @description
*/
@Controller
@RequestMapping("/remoteDict")
public class RemoteDictController {
//自定义分词词库
@Autowired
private IkExtDictService extDictService;
@Autowired
private IkStopDictService stopDictService;
private final String DEFAULT_LAST_MODIFIED = "174


4315

被折叠的 条评论
为什么被折叠?



