solr hanlp配置动态加载自定义词库
solr hanlp配置动态加载自定义词库
Hanlp提供了动态刷新自定义词库的接口
/** * 热更新(重新加载)<br> * 集群环境(或其他IOAdapter)需要自行删除缓存文件(路径 = HanLP.Config.CustomDictionaryPath[0] + Predefine.BIN_EXT) * * @return 是否加载成功 */ public boolean reload() { if (path == null || path.length == 0) return false; IOUtil.deleteFile(path[0] + Predefine.BIN_EXT); // 删掉缓存 return loadMainDictionary(path[0]); } }
或者在这下载()
2、在dictinoary里新增一个类
package com.hankcs.hanlp.dictionary; import org.apache.solr.core.SolrCore; import org.apache.solr.core.SolrResourceLoader; import org.apache.solr.handler.RequestHandlerBase; import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.util.plugin.SolrCoreAware; /** * @author:pxt * @create: 2022-11-02 13:25 * @Description:用于接收solr请求调用reload */ public class DynamicCustom extends RequestHandlerBase implements SolrCoreAware { private SolrResourceLoader loader = null; @Override public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception { CustomDictionary.reload(); } @Override public String getDescription() { return ""; } @Override public void inform(SolrCore solrCore) { loader = solrCore.getResourceLoader(); } }
附上增加的solr依赖
<dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-core</artifactId> <version>6.0.0</version> </dependency>
做完上边步骤后即可打包将hanlp.jar 上传到服务器lib中
4、接下来配置solr
在solrconfig.xml中添加如下代码
<requestHandler name="/HanlpHandler/reloadwords" class="com.hankcs.hanlp.dictionary.DynamicCustom"> <lst name="defaults"> </lst> </requestHandler>
配置完之后重启solr服务器,在更改自定义词库后访问地址http://ip:8080/solr/new_core/HanlpHandler/reloadwords 即可刷新自定义词库。若不成功尝试先删除.bin文件再刷新。