Solr动态加载分词器的自定义词库扩展词库解决方案
来源:互联网 发布:华美网络飞天侠 编辑:程序博客网 时间:2024/05/16 20:55
最近在做全文检索 在项目中有个需求是要动态的配置Solr的自定义扩展词库,在网上找了很多资料 发现关于这方面的知识比较少 千辛万苦终于找到了解决方案 在这里和大家分享一下
1.自行下载mmseg4j有关的Java包
# 适配SOLR6.2.1mmseg4j-core-1.10.0.jarmmseg4j-solr-2.3.0.jar
2.将下载好的Jar包放入webapps/solr/WEB-INF/lib下
3.修改managed-schema配置,添加如下内容
<!-- 中文分词mmseg4j --><fieldtype name="text_mmseg4j_simple" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="自定义词库路径" /> <!-- 停止词过滤器 --> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <filter class="solr.LowerCaseFilterFactory"/> </analyzer></fieldtype><fieldtype name="text_mmseg4j_complex" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="自定义词库路径" /> <!-- 停止词过滤器 --> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <filter class="solr.LowerCaseFilterFactory"/> </analyzer></fieldtype><fieldtype name="text_mmseg4j_maxWord" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="自定义词库路径" /> <!-- 停止词过滤器 --> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <filter class="solr.LowerCaseFilterFactory"/> </analyzer></fieldtype>
4.修改solrconfig.xml配置,添加如下内容
<requestHandler name="/mmseg4j/reloadwords" class="com.chenlb.mmseg4j.solr.MMseg4jHandler"> <lst name="defaults"> <str name="dicPath">自定义词库路径</str> <str name="check">true</str> <str name="reload">true</str> </lst></requestHandler>
5.在自定义词库目录下放入词库
5.1: 在mmseg4j-core-1.10.0.jar中找到chars.dic, units.dic, words,dic放入自定义词库目录下 这三个都是官方词库,你可以更改以便覆盖官方配置, 也可以不更改.
5.2: 自定义词库可识别到文件名为words开头, .dic为文件结尾的UTF-8格式的文件.如在自定义词词库下创建words-my.dic。如果是带BOM的UTF8文件, 第一行为空即可. 每行一个词.
6.重新加载自定义词库
单机版访问http://localhost:8983/solr/CORE名称/mmseg4j/reloadwords 进行动态加载自定义词库
SolrCloud如果涉及到多个节点,则每个节点都要执行以下访问方可使所有节点都生效
http://节点1:8983/solr/CORE名称/mmseg4j/reloadwords
http://节点2:8983/solr/CORE名称/mmseg4j/reloadwords
http://节点3:8983/solr/CORE名称/mmseg4j/reloadwords
7.返回结果如下
<?xml version="1.0" encoding="UTF-8"?><response> <lst name="responseHeader"> <int name="status">0</int> <int name="QTime">1</int> </lst> <lst name="result"> <str name="dicPath">java.net.URI:file:自定义词库路径</str> <bool name="changed">false</bool> </lst></response>
- Solr动态加载分词器的自定义词库扩展词库解决方案
- solr下动态加载词库的分词器
- Solr配置IK分词器自定义词库
- Ikanalyzer分词器动态自定义词库的方法
- 搜索引擎solr系列---自定义扩展词库的配置
- 庖丁解牛分词自定义词库
- solr中ik分词自定义词库和停止词
- solr中ik分词配置同义词、停止词、自定义词库
- solr配置同义词,停止词,和扩展词库(IK分词器为例)
- [solr] - IKAnalyzer 扩展分词库
- [solr] - IKAnalyzer 扩展分词库
- 吴超-----solr添加中文IK分词器,以及配置自定义词库
- 配置Solr中文分词器IK以及ansj,支持动态修改用户词库。
- 分词器,使用中文分词器,扩展词库,停用词
- solr配置IK分词,使用sogou词库
- solr学习文档之添加分词词库
- solr中添加扩展分词库和停止词库
- SHOP++中文分词检索词库扩展
- javascript中几种页面跳转方式
- hive 优化
- Java String和Date的转换
- UITableView性能优化,超实用
- gulp代码压缩管理工具
- Solr动态加载分词器的自定义词库扩展词库解决方案
- spring中的定时器用法
- MySQL优化笔记
- 判断某数组是不是二叉搜索树的后序遍历序列
- SpringMVC工作原理
- Hashing
- 利用grok对Nginx日志进行分解
- ajax获取数据
- 第五篇:适配器模式