solr4.7安装配置,solrcloud安装配置,中文分词使用步骤

1.Solr的安装与配置

2.Solr的几个基本概念

3.向Solr中单条写入数据和批量写入数据

4.对Solr中的数据精确查询或模糊查询

5.Solr的中文分词

6.单实例下Solr的主从配置


1.1、安装JDK

⑴.使用yum安装:yum -y install java-1.7.0-openjdk

⑵.下载jdk-7u65-linux-x64.gz解压到/usr/local/

#tarzxf jdk-7u65-linux-x64.gz -C /usr/local

修改/etc/profile配置环境变量,添加一下内容:

exportJAVA_HOME=/usr/local/jdk1.7.0_65

exportLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

exportPATH=$PATH:$JAVA_HOME/bin

使用命令source /etc/profile使配置即时生效。

1.2、下载apache-tomcat-7.0.54.tar.gz并配置

#tarzxf apache-tomcat-7.0.54.tar.gz -C /usr/local/

#ln -s /usr/local/apache-tomcat-7.0.54/ /usr/local/tomcat

编辑vim /usr/local/tomcat/conf/server.xml文件,修改第124行:

指定Solr的webapp位置,这里的webapps-solr是用的相对位置(对应的绝对位置是/usr/local/tomcat/webapps-solr)

#mkdir /usr/local/tomcat/webapps-solr

1.3、下载solr-4.7.2.tgz并配置Solr

#tar zxf solr-4.7.2.tgz

#cp solr-4.7.2/example/webapps/solr.war/usr/local/tomcat/webapps-solr

启动tomcat自动解压solr.war文件,并将相关jar包拷贝到Solr的工作目录下

#/usr/local/tomcat/bin/startup.sh

#cp solr-4.7.2/example/lib/ext/*/usr/local/tomcat/webapps-solr/solr/WEB-INF/lib

修改/usr/local/tomcat/webapps-solr/solr/WEB-INF/web.xml文件指定Solr的数据目录

#vim /usr/local/tomcat/webapps-solr/solr/WEB-INF/web.xml

删除原来第40,46行的注释符,修改第42行指定到/data/solrbase(当然你可以指定到任何位置)

#mkdir -p /data/solrbase/

#cp solr-4.7.2/example/solr/solr.xml/data/solrbase                    //很重要

从solr-4.9.0/example/lib/ext/*下拷贝所有jar包到/usr/local/tomcat/webapps-solr/solr/WEB-INF/lib/

#cp solr-4.7.2/example/resources/log4j.properties /usr/local/tomcat/webapps-solr/solr/WEB-INF/lib/

#cp solr-4.7.2/example/lib/ext/*/usr/local/tomcat/webapps-solr/solr/WEB-INF/lib/

重启tomcat看到如下界面:

1.4、为你的Solr创建第一个Core(core的概念:每个core即一个索引库,可以理解每个core对应一个数据库实体表。)

创建一个名字叫product的Core:

#mkdir /data/solrbase/product

#echo name=product > /data/solrbase/product/core.properties//很重要

#mkdir /data/solrbase/product/conf

#cd /data/solrbase/product/conf

创建product的Core配置文件, solrconfig.xml、 schema.xml(如果你赖的手工写,可以从solr-4.7.2/example/solr/collection1整个目录下拷贝到/data/solrbase)

#vim solrconfig.xml

<?xmlversion="1.0" encoding="UTF-8" ?>

<config>

  <luceneMatchVersion>4.7</luceneMatchVersion>

  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.StandardDirectoryFactory}"/>

  <dataDir>${solr.product.data.dir:}</dataDir>

  <schemaFactory class="ClassicIndexSchemaFactory"/>

  <updateHandlerclass="solr.DirectUpdateHandler2">

    <updateLog>

      <str name="dir">${solr.product.data.dir:}</str>

    </updateLog>

  </updateHandler>

  <requestHandler name="/get" class="solr.RealTimeGetHandler">

    <lst name="defaults">

      <str name="omitHeader">true</str>

    </lst>

  </requestHandler>  

<requestHandler name="/replication"class="solr.ReplicationHandler" startup="lazy" />

  <requestDispatcher handleSelect="true" >

    <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" formdataUploadLimitInKB="2048" />

  </requestDispatcher>

  <requestHandler name="standard" class="solr.StandardRequestHandler" default="true" />

  <requestHandler name="/analysis/field"startup="lazy" class="solr.FieldAnalysisRequestHandler" />

  <requestHandler name="/update" class="solr.UpdateRequestHandler" />

  <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />

  <requestHandler name="/admin/ping"class="solr.PingRequestHandler">

    <lst name="invariants">

      <str name="q">solrpingquery</str>

    </lst>

    <lst name="defaults">

      <str name="echoParams">all</str>

    </lst>

  </requestHandler>

  <admin>

    <defaultQuery>productdesc</defaultQuery>

  </admin>

</config>

具体解释: http://www.blogjava.net/conans/articles/379545.html

#vim schema.xml

<?xmlversion="1.0" ?>

<schemaname="product" version="1.1">

<fieldtypename="string"  class="solr.StrField" sortMissingLast="true" omitNorms="true"/>

<fieldTypename="int"class="solr.IntField" omitNorms="true"/>

<fieldTypename="long" class="solr.TrieLongField" precisionStep="0" positionIncr

ementGap="0"/>

  <field name="pid"     type="int"    indexed="true" stored="true"  multiValued="false"required="true"/>

  <field name="prodesc"type="string" indexed="true" stored="true"  multiValued="false"required="true"/>

<fieldname="_version_" type="long"  indexed="true"  stored="true"/>

 <uniqueKey>pid</uniqueKey>

 <defaultSearchField>prodesc</defaultSearchField>

 <solrQueryParser defaultOperator="OR"/>

</schema>

具体解释:

http://www.blogjava.net/conans/articles/379545.html


Document:Solr的信息的基本单位的是Document,它是一组描述某些事物的数据集合。

Field:         Document的主要构成单元,是更具体的信息描述。

其实大家可以这样理解,Document 对应于Java代码中的一个类;而Field,则是类中的一个属性。

FieldAnalysis:就是solr如何对传进来的数据进行处理,如何构建索引。假设有个个人简介的Field,他里面包括了很多单词,我们需要在构建索引完之后,通过检索某个单词就能查询到这个人,那么我们就需要对每个单词都进行索引,但是,一句话有很多语气助词,如果a an  or and not (啊噢 喔 哦等),这些词我们又不需要为他们建索引,在构建索相的时候,需要排除出去。那么那些单词我们要建索引,那些又不需要列,这个分析出过程,我们就称为:field Analysis.

FieldType:告诉solr如何去处理某个field的数据,以及这个Field在查询的时候如何处理。

一个Field Type包括如下四部分信息:

  名字,name

  实现类名,也就是solr中真正的类型的类名。

  如果FieldType是 TextFiled类型,即还有analysis属性

  属性


2.基于xml格式的单条数据插入:

http://192.168.8.96:8080/solr/product/update/?stream.body=<add><doc><fieldname="pid">2</field><fieldname="prodesc" >电脑管家云查杀引擎扫描</field></doc></add>&stream.contentType=text/xml;charset=utf-8&commit=true

3.基于Json格式的单条数据插入:

http://192.168.8.96:8080/solr/product/update/?stream.body={"add":{"doc":{"pid":3, "prodesc":"这是一个测试"}}}&commit=true

4.从Mysql数据库中将数据批量导入:

⑴.编辑solrconfig.xml 注册一个请求uri为 "/dataimport"的请求处理器(org.apache.solr.handler.dataimport.DataImportHandler),代码如(插入到倒数第2行):

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

ImportHandler">

  <lst name="defaults">

  <str name="config">mysql-data-config.xml</str>

  </lst>

  </requestHandler>

⑵.创建mysql-data-config.xml文件放到solr.home/conf 目录下,内容如下:

#vimmysql-data-config.xml

⑺.在图形界面下批量导入数据:

使用命令的方式:

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



这里的中文分词以IK为例,其他的略过:

1.下载

wgethttp://ik-analyzer.googlecode.com/files/IK%20Analyzer%202012FF_hf1.zip

2.配置

#unzip IK\ Analyzer\2012FF_hf1.zip

#cp IKAnalyzer2012FF_u1.jar /usr/local/tomcat/webapps-solr/solr/WEB-INF/lib

#mkdir /usr/local/tomcat/webapps-solr/solr/WEB-INF/class

#cpIKAnalyzer.cfg.xml /usr/local/tomcat/webapps-solr/solr/WEB-INF/class

#cpstopword.dic /usr/local/tomcat/webapps-solr/solr/WEB-INF/class

编辑schema.xml文件对分词进行配置:

在<schema name="product" version="1.1">所在行下,添加一下内容:

<types>                                                                  

    <fieldType name="split_cn" class="solr.TextField">  

        <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>  

    </fieldType>

 </types>

将<field name="prodesc"type="string" indexed="true" stored="true" multiValued="fal

se"required="true"/>

改成<field name="prodesc"type="split_cn" indexed="true"stored="true" multiValued="false"required="true"/>

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

#vim cn_ext.dic    #创建一个中文分词的扩展字典

世界工厂

人民共和

#vim IKAnalyzer.cfg.xml  #修改其扩展词典的选项,如下

<comment>IKAnalyzer 扩展配置</comment>                                 

        <!--用户可以在这里配置自己的扩展字典-->

        <entry key="ext_dict">cn_ext.dic;</entry>

重启tomcat服务并测试分词效果,多了人民共和一项:

扩展现有的停止词词典:

#vimstopword.dic  #在最后添加如下三个词

共和国

共和

重启tomcat服务并测试分词效果,少了共和国、共和、国三项。

1.编辑主服务器的solrconfig.xml,在</config>上一行加入:

<requestHandler name="/replication"class="solr.ReplicationHandler" >

   <lstname="master">

   <strname="replicateAfter">startup</str>

   <strname="replicateAfter">commit</str>

   <strname="confFiles">schema.xml,stopwords.dic,elevate.xml</str>

   <strname="commitReserveDuration">00:00:10</str>

   </lst>

   <strname="maxNumberOfBackups">1</str>

 </requestHandler>

2.编辑从服务器的solrconfig.xml,在</config>上一行加入:

 <requestHandler name="/replication"class="solr.ReplicationHandler" >

   <lstname="slave">

   <strname="masterUrl">http://192.168.8.96:8080/solr/product</str>

   <strname="pollInterval">00:00:20</str>

   <strname="compression">internal</str>

   <strname="httpConnTimeout">5000</str>

   <strname="httpReadTimeout">10000</str>

   </lst>

 </requestHandler>

主从一致性的验证:

⑴.重启主从两台服务器的tomcat服务:

⑵.在主服务器上增删数据:

增加一条数据(记得先查看从Solr上是否有这条记录)

http://192.168.8.96:8080/solr/product/update/?stream.body={"add":{"doc":{"pid":121, "prodesc":"这是一个测试"}}}&commit=true

删除一条数据(记得先查看从Solr上是否有这条记录)

http://192.168.8.96:8080/solr/product/update/?stream.body=<delete><id>15</id></delete>&stream.contentType=text/xml;charset=utf-8&commit=true

⑶.检验从服务器上,是否多了pid为121的记录,是否少了pid为15的记录

http://192.168.8.96:8080/solr/product/select?q=pid:121&wt=json&indent=true

http://192.168.8.96:8080/solr/product/select?q=pid:15&wt=json&indent=true




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wulantian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值