技术库 > Java

Solr动态加载分词器的自定义词库扩展词库

技术库:tec.5lulu.com

from:tec.5lulu.com

1.自行下载mmseg4j有关的Java


# 适配SOLR6.2.1
mmseg4j-core-1.10.0.jar
mmseg4j-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本文链接 http://tec.5lulu.com/detail/110dtn2ehwgcw855e.html

我来评分 :6.1
0

转载注明:转自5lulu技术库

本站遵循:署名-非商业性使用-禁止演绎 3.0 共享协议

www.5lulu.com