建立Solr引擎

准备安装包

jdk-8u151-linux-x64.tar.gz:下载地址
solr-7.1.0:下载地址
ik-analyzer-solr7.x.zip:下载地址

由于 ik-analyzer的版本兼容问题,此处提供的可以兼容solr7.x,如果是其他版本的,请注意此问题。

安装jdk1.8.0

新增配置/etc/profile如下:

#set java environment
export JAVA_HOME=/usr/local/jdk1.8.0
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
export PATH=${JAVA_HOME}/bin:$PATH

安装solr7.1

下载solr7.1后解压至需要放置的目录,我放在/usr/local/solr-7.1.0下,如下图:


solr5之后发布版本自带jetty服务器,可以自行启动。bin/solr start [-p port],默认端口号8983。 可以通过netstat -anp | grep 8983,命令查看端口是否占用。solr引擎运行后,可以通过url:http://localhost:8983/solr/#/ ,进入solr管理列表界面,如下图:

配置中文分词器IK Analyzer

将ik的jar文件 拷贝到 server/solr-webapp/webapp/WEB-INF/lib 目录下

cp ik-analyzer-solr7x.jar /usr/local/solr-7.1.0/server/solr-webapp/webapp/WEB-INF/lib

将IKAnalyzer配置文件,停滞词词典拷贝到server/solr-webapp/webapp/WEB-INF/classes/

cp stopword.dic IKAnalyzer.cfg.xml /usr/local/solr-7.1.0/server/solr-webapp/webapp/WEB-INF/classes/

配置IKAnalyzer分词器的扩展词典,停止词词典

<?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>

配置Solr文件引入IKAnalyzer模块
需要新建一个core模块,进行数据管理,新建命令如下:

bin/solr create -c ifiction

执行成功后会在/usr/local/solr-7.1.0/server/solr生成ifiction文件。
编辑/usr/local/solr-7.1.0/server/solr/ifiction/conf/managed-schema文件,添加下面代码引入IKAnalyzer模块:

    <fieldType name="text_ik" class="solr.TextField">     
        <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
    </fieldType> 

配置需要分词的字段:summary

    <field name="fid" type="pint" indexed="true" stored="true" multiValued="false" />
    <field name="type" type="pint" indexed="true" stored="true" multiValued="false" />
    <field name="title" type="string" indexed="true" stored="true" multiValued="false" />
    <field name="cover" type="string" indexed="true" stored="true" multiValued="false" />
    <field name="writer" type="string" indexed="true" stored="true" multiValued="false" />
    <field name="tags" type="string" indexed="true" stored="true" multiValued="false" /> 
    <field name="summary" type="text_ik" indexed="true" stored="true" multiValued="false" />
    <field name="updateline" type="pint" indexed="true" stored="true" multiValued="false" />
    <field name="sort_base" type="pint" indexed="true" stored="true" multiValued="false" /> 
                                                                                                                       
    <!-- This can be enabled, in case the client does not know what fields may be searched. It isn't enabled by default
         because it's very expensive to index everything twice. -->
    <copyField source="title" dest="_text_"/>
    <copyField source="writer" dest="_text_"/>
    <copyField source="tags" dest="_text_"/>
    <copyField source="summary" dest="_text_"/>

配置完成需要重启solr引擎,sudo /usr/local/solr-7.1.0/bin/solr restart -force。
说明:
(1)type="text_ik",是引入IKAnalyzer模块时的name配置的,下面测试solr的中文分词如下图:


(2)copyField 这个是复制字段,将配置的source都收集到 text 域上,可以用作全文检索,就如上述英文注释描述。

至此,solr引擎及中文分词的模块搭建也就全部完成。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一.简介 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通...
    泰安青年阅读 3,711评论 0 37
  • 总结包括:1 了解前端打包方案的黑暗历史2 模块化发展3 Webpack3 打包流程 在说webpack之前, 我...
    NOTEBOOK2阅读 232评论 0 1
  • 目的:泛解析后的域名访问到tomcat的时候分发到对应的项目中 将tomcat端口修改为80 找到tomcat配置...
    楽祀阅读 634评论 0 0
  • 家里要搬迁了,对于年迈的父母自然是好事,生活在平房里面,每天还的压水,拿柴烧火做饭。我从父母的眼中看到了开...
    小樱桃娇阅读 102评论 0 0
  • “我心悦卿卿兮,卿卿悦我乎?”这句话,是我耳闻过最美的告白之一。 可是,这句话,像是在鼓励那些勇于追求爱情的人去表...
    美文小屋阅读 591评论 0 0