首页 > 其他 > 详细

Solr配置ik分词器(扩展词,停用词)同时进行同义词解析

时间:2019-12-27 16:49:59      阅读:103      评论:0      收藏:0      [点我收藏+]

Solr5.5.5版本+IK Analysis的词典及同义词配置

我的Solr5.5.5是采用Jetty方法进行配置的

主要是配置三个文件

  • /usr/solr/solr-5.5.5/server/solr/mycore(自己定义的core)/conf/schema.xml
    • 配置域,自定义各种数据,并关联solr里面的数据
  • /usr/solr/solr-5.5.5/server/solr/mycore(自己定义的core)/conf/solrconfig.xml
    • 定义了一些solr的处理规则,基础配置文件
    • 索引数据的存放位置
    • 更新,删除,查询的一些规则配置
  • /usr/solr/solr-5.5.5/server/solr/mycore(自己定义的core)/conf/data-config.xml(这个文件自己创建一个添加进去就好)
    • 这个是solr关联数据库的一个文件

废话不多说,上代码

首先出场的是:data-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
    <!--数据库-->
    <dataSource name="test" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" 
    url="jdbc:mysql://localhost:3306/test"  user="root" password="password"/>
    <document name="user">
            <!--用户表-->
        <entity dataSource="test" name="user" pk="id" query="select * from user">
            <field column="id" name="id"/>
            <field column="title" name="title"/>
        </entity>
        <!--如果要添加同一个数据库下的其他操作的话按照这个格式即可-->
        <entity dataSource="test" name="xxxx" pk="xxxx" query="xxxxxx">
            <field column="xxxx" name="xxx"/>
            <field column="xxxxxx" name="xxxxx"/>
        </entity>
    </document>
</dataConfig>

踩坑点:

  • dataSource标签中的name必须和下面entity标签中的dataSource属性对应
  • 一个dataSource下面只能有一个document但是可以有多个entity
  • entity在配置的时候记得配置上主键(PK)
  • entity中的每一个column都记得在schema.xml中配置

紧接着:schema.xml

<!-- 对数据库中的字段进行配置 -->
<field name="title" type="text_iksyn" indexed="true" stored="true" />
<!-- 同义词&IK分词 -->
<field name ="text" type ="text_iksyn" indexed ="true" stored ="false" multiValued ="true"/>
<fieldType name="text_iksyn" class="solr.TextField">
    <analyzer type="index" positionIncrementGap="100" autoGeneratePhraseQueries="true">
    <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" isMaxWordLength="false"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    </analyzer>
    <analyzer type="query">
        <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" isMaxWordLength="false" />
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
</fieldType>

踩坑点:

  • 对数据库中的字段配置真的是很有必要的!!!并且如果你想要后面的某个属性进行分词的话一定要指定他的type和后面配置的ik分词器中的一样!!!!!
  • IK分词的时候注意上面的class一定不要错,不然到时候Reload的时候必报错
  • index和query两个最好都配置上
  • 注意在配置同义词的时候这个synonyms一定要对应好同义词词典
  • LowerCaseFilterFactory是一个配置不区分大小写的,可有可无

配置完这两个之后可以顺便把同义词词典给弄一下,见下面两幅图:

技术分享图片

技术分享图片

踩坑点:
保存的时候务必是utf-8,不然你会发现白弄了
可以用=>来进行配置,但是这样的话只能是左边等同于右边,比如输入还行会出来还可以,但是输入还可以那么还是还可以(这不是绕口令)
可以用英文的逗号进行分割,切记英文逗号!这样的配置可以等价替换

最后就是solrconfig.xml

<!-- 随便找个地方加上就好 -->
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler" >
    <lst name="defaults">
      <str name="config">data-config.xml</str>
    </lst>
</requestHandler>

截至到此差不多就可以啦,可别说你不知道ik该放在什么目录!好吧,起始刚开始我也不知道(/▽\=)

IK分词器怎么配置

将IK的jar包放到/usr/solr/solr-5.5.5/server/solr-webapp/webapp/WEB-INF/lib目录下
将ext.dic、IKAnalyzer.cfg.xml、stopword.dic复制到/usr/solr/solr-5.5.5/server/solr-webapp/webapp/WEB-INF/classes目录下(classes自行创建)
IKAnalyzer.cfg.xml中的内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">  
<properties>  
    <comment>IK Analyzer 扩展配置</comment>
    <!-- 用户可以在这里配置自己的扩展字典  -->
    <entry key="ext_dict">ext.dic;</entry> 
    
    <!--用户可以在这里配置自己的扩展停止词字典-->
    <entry key="ext_stopwords">stopword.dic;</entry> 
    
</properties>

踩坑点:
扩展词词典和停用词词典一定要是utf-8格式的!
在刚下载下来的ext.dic配置扩展词词典的那句话是被注释掉的!千万记得去看一眼,一眼就好!

q(≧▽≦q)这下真的就结束啦!感谢观看!欢迎指正!

Solr配置ik分词器(扩展词,停用词)同时进行同义词解析

原文:https://www.cnblogs.com/starcoder/p/12108130.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!