文档章节

Solr环境配置、中文分词、数据库做为索引源及索引操作

空_明
 空_明
发布于 2013/06/26 16:04
字数 1264
阅读 2496
收藏 21

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

一、配置solr环境

1、  下载solr  http://www.apache.org/dyn/closer.cgi/lucene/solr/

此处用的是4.6 解压到D盘D:/solr/apache-solr-4.6.0

2、修改tomcat conf/server.xml

  <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"URIEncoding="UTF-8" />

添加编码的配置 URIEncoding="UTF-8" (如不添加,中文检索时因为乱码搜索不到)

3、  配置solr

Tomcat  conf/Catalina/localhost下添加solr.xml

内容:

<Context docBase="D:/solr/apache-solr-4.6.0/dist/apache-solr-4.6.0.war" debug="0" crossContext="true" >

<Environment name="solr/home" type="java.lang.String" value="D:/solr/apache-solr-4.6.0/example/solr" override="true" />

</Context>

4、 启动tomcat  输入http://localhost:8080/solr/  出现欢迎界面表示成功

二、中文分词配置

1、 下载分词器: http://code.google.com/p/mmseg4j/

2、下载词库:http://code.google.com/p/mmseg4j/downloads/detail?name=data.zip&can=2&q

3、将解压后的mmseg4j-1.8.5目录下的mmseg4j-all-1.8.5.jar拷贝到Tomcat的webapps/solr/WEB-INF/lib目录下。

4、添加词库:在D:/solr/apache-solr-4.6.0/example/solr目录下新建dic文件夹,将解压后的data目录下的words.dic拷贝到D:/solr/apache-solr-4.6.0/example/solr/dic目录下。

5、  更改schema.xml(D:/solr/apache-solr-4.6.0/example/solr/conf/)文件,使分词器起到作用。

在schema.xml的<types>、<fields>和部分新增如下配置:

注:dicPath=" "是你的词库路径。

    <!--mmseg4j field types-->

       <fieldType name="textComplex" class="solr.TextField" positionIncrementGap="100" > 

                  <analyzer> 

                     <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="D:/solr/apache-solr-4.6.0/example/solr/dic"/> 

                     <filter class="solr.LowerCaseFilterFactory"/> 

           </analyzer> 

       </fieldType> 

     <fieldType name="textMaxWord" class="solr.TextField" positionIncrementGap="100" > 

        <analyzer> 

            <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="D:/solr/apache-solr-4.6.0/example/solr/dic"/> 

            <filter class="solr.LowerCaseFilterFactory"/> 

        </analyzer> 

     </fieldType> 

     <fieldType name="textSimple" class="solr.TextField" positionIncrementGap="100" > 

       <analyzer> 

           <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="D:/solr/apache-solr-4.6.0/example/solr/dic"/> 

           <filter class="solr.LowerCaseFilterFactory"/> 

       </analyzer> 

     </fieldType>

   <!-- mmseg4j field -->

   <field name="simple" type="textSimple" indexed="true" stored="true" multiValued="true"/> 

   <field name="complex" type="textComplex" indexed="true" stored="true" multiValued="true"/> 

   <field name="text_mmseg4j" type="textMaxWord" indexed="true" stored="true" multiValued="true"/>

  <!-- mmseg4j copyField -->

   <copyField source="simple" dest="text_mmseg4j"/>

   <copyField source="complex" dest="text_mmseg4j"/>

重启你的tomcat。

访问:http://localhost:8080/solr/admin/analysis.jsp可以看 mmseg4j 的分词效果。在 Field 的下拉菜单选择 name,然后在应用输入 complex。分词的结果,如下图:

好了,可以运行起来了,那就添加个文档试下,在 解压后的D:/solr/apache-solr-4.6.0/example/exampledocs目录下创建 mmseg4j-solr-demo-doc.xml 文档,内容如下:

  <add> 

      <doc> 

          <field name="id">1</field> 

          <field name="text">高效、灵活的缓存功能,垂直搜索功能。</field> 

      </doc> 

      <doc> 

          <field name="id">2</field> 

          <field name="text"> Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。</field> 

      </doc> 

      <doc> 

          <field name="id">3</field> 

          <field name="text"> 独立的企业级搜索应用服务器</field> 

      </doc> 

  </add>

注意:使用的字段name必须在solr的配置文件schem.xml增加

       下(id、title)一样

然后在 cmd 下运行 post.jar,如下:

D:\solr\apache-solr-4.6.0\example\exampledocs>java -Durl=http://localhost:8080/

solr/update -Dcommit=yes -jar post.jar mmseg4j-solr-demo-doc.xml 

注意:mmseg4j-solr-demo-doc.xml 要是 UTF-8 格式,不然提交后会乱码。还有在查询中文时需要把tomcat设置成URIEncoding="UTF-8";

查看是否有数据,访问:http://localhost:8080/solr/admin/ 在Query String: 中输入“高性能”

显示如下图所示:

三、Solr将数据库做成索引数据源(以mysql为例)

1、  在solrconfig.xml中配置导入数据功能(D:\solr\apache-solr-4.6.0\example\solr\conf下)

     <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> 

     <lst name="defaults"> 

       <str name="config">D:\solr\apache-solr-4.6.0\example\solr\conf\db\db-data-config.xml</str> 

     </lst> 

  </requestHandler>

2、  添加一个数据源db-data-config.xml (D:\solr\apache-solr-4.6.0\example\solr\conf\db下)

    <dataConfig>

         <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/solr" user="root" password="root"/>

             <document name="messages">

               <entity name="user" transformer="ClobTransformer" query="select * from t_user">

             <field column="id" name="id" />

                      <field column="name" name="name"/>

                      <field column="title" name="title"/>

         </entity>

     </document>

 </dataConfig>

CREATE TABLE t_user  

(  

   id         VARCHAR(255) PRIMARY KEY,  

   name       VARCHAR(10) NOT NULL,  

   title        VARCHAR(10)

);

3、放入mysql驱动包  (Tomcat的webapps/solr/WEB-INF/lib目录下)

4、创建索引

   http://localhost:8080/solr/dataimport?command=full-import

5、  查看是否成功,访问:http://localhost:8080/solr/admin/ 在Query String: 中输入“sunshan”、“孙闪”

如下图:

注:保证与数据库连接正确

四、Solr多核(MultiCore)配置

1、  拷贝multicore(D:\solr\apache-solr-4.6.0\example下)下的core0、core1、exampledocs到solr(D:\solr\apache-solr-4.6.0\example\solr下)目录下

2、  更改solr.xml(D:\solr\apache-solr-4.6.0\example\solr下)配置

添加:

<core name="core0" instanceDir="core0" dataDir="D:/solr/apache-solr-4.6.0/example/solr/core0/data"/>

<core name="core1" instanceDir="core1" dataDir="D:/solr/apache-solr-4.6.0/example/solr/core1/data"/>

配置后:

   <cores adminPath="/admin/cores">

    <core name="collection1" instanceDir="." />

  <core name="core0" instanceDir="core0" dataDir="D:/solr/apache-solr-4.6.0/example/solr/core0/data"/>

    <core name="core1" instanceDir="core1" dataDir="D:/solr/apache-solr-4.6.0/example/solr/core1/data"/>

  </cores>

3、  启动tomcat 访问:

http://localhost:8080/solr/

五、多核数据库索引:

同上配置

注:出现错误Error loading class 'org.apache.solr.handler.dataimport.DataImportHandler'

需配置(solrconfig.xml里)

  <!-- start -->

  <lib dir="D:/solr/apache-solr-4.6.0/contrib/extraction/lib" />

  <lib dir="D:/solr/apache-solr-4.6.0/dist/" regex="apache-solr-cell-\d.*\.jar" />

  <lib dir="D:/solr/apache-solr-4.6.0/dist/" regex="apache-solr-clustering-\d.*\.jar" />

  <lib dir="D:/solr/apache-solr-4.6.0/dist/" regex="apache-solr-dataimporthandler-\d.*\.jar" />

  <lib dir="D:/solr/apache-solr-3.3.0/contrib/clustering/lib/" />

  <lib dir="/total/crap/dir/ignored" />

  <!-- end -->

dir注意路径

重启tomcat

创建索引:http://localhost:8080/solr/core1/dataimport?command=full-import

http://localhost:8080/solr/dataimport?command=full-import 这 url 告诉 solr 做全量索引,做索引中会删除所有数据。当然也可以用 clean=false 参数来告诉它不删除,但也会删除相同id的(在 scheam.xml 的uniqueKey 声明的)。http://localhost:8080/solr/dataimport?command=full-import&clean=false

批量导入command=delta-import&commit=y

重新装载配置文件command=reload-config

终止导入command=abort


© 著作权归作者所有

空_明
粉丝 35
博文 92
码字总数 71993
作品 0
东城
高级程序员
私信 提问
加载中

评论(5)

空_明
空_明 博主

引用来自“alan-”的评论

mark too
alan-
alan-
mark too
alan-
alan-

引用来自“空名道人”的评论

mk 什么意思 ????
mark
空_明
空_明 博主
mk 什么意思 ????
林林未
林林未
mk
Solr安装及集成javaWeb

1.下载solr-4.7.1 http://www.apache.org/dyn/closer.cgi/lucene/solr/4.7.1 环境需求:java 1.6版本以上;solr运行需要java serverlet 容器,默认使用jetty,或者tomcat,jboss等等。 2.To...

一枚Sir
2014/04/14
11.3K
4
solr4.9在tomcat7下安装、配置

solr简介 solr是受欢迎的,速度极快的开源企业搜索平台。主要功能包括强大的全文搜索,搜索词高亮显示,分面搜索,近实时的索引,动态聚类,数据库集成,丰富的文件(例如,Word,PDF)处理,...

cloud-coder
2014/08/21
1K
1
使用sphinx search打造你自己的中文搜索引擎

python学习笔记整理于猿人学网站的python教程和python爬虫 Google搜索引擎建立至今已经快20年了,之后全球各类大大小小类似的搜索引擎也陆续出现、消亡。国内目前以百度为大,搜狗、360、必应...

呆木木人儿
03/04
943
0
solr添加中文IK分词器,以及配置自定义词库

Solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式)。它易于安装和配置,而且附带了一个基于HTTP 的管理界面...

超人学院
2015/05/08
7.2K
0
m631521383/IKAnalyzer2017_6_6_0

IKAnalyzer201766_0 码云:https://git.oschina.net/iicode/IKAnalyzer2017660 Github:https://github.com/ittalks/IKAnalyzer2017660 IKAnalyzer2017660.jar:https://github.com/ittalks/IK......

m631521383
2017/09/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊rocketmq producer的batch

序 本文主要研究一下rocketmq producer的batch batch rocketmq-client-4.6.0-sources.jar!/org/apache/rocketmq/client/producer/DefaultMQProducer.java public class DefaultMQProducer ex......

go4it
昨天
5
0
Delphi中的延时

开发过程中经常会需要使用到延时功能,Delphi中有不少实现延时的方法,网上已有不少文章做过说明和分析,但本着实践出真知的态度,还是亲自动手研究一番心里比较踏实。 常用的延时方法 Slee...

天朝八阿哥
昨天
5
0
001-Consul

Consul安装(单节点) mkdir -p /data/consulcd /data/consulwget https://releases.hashicorp.com/consul/1.6.2/consul_1.6.2_linux_amd64.zipunzip consul_1.6.2_linux_amd64.zip复制c......

伟大源于勇敢的开始
昨天
5
0
nginx + frp 搭建内网穿透

上一个项目是开发微信公众号,由于微信的各种烦人操作,只能到处找内网映射工具 ngrok也用过,花生壳也用过 都不怎么稳定,无意间听说了frp,本着一颗折腾的心搭建了一下,结果发现很不错,就...

lineasy
昨天
8
0
构建CRD工程 - 程序员学点xx 43 k8s

Kubernetes -3- <!--more--> <center>这是yann的第98篇分享</center> [TOC] 本日状态: 帮同事排了一天bug。 Kubernetes -3- <!--more--> 这是yann的第98篇分享 第 1 部分 承前 昨天用视屏的方......

tmp4
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部