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文件再刷新。
