solr6.6在win下安装和mysql的配置

一、window 环境

solr 6.6.0 下载地址  http://apache.fayea.com/lucene/solr/6.6.0/

jdk 1.8    tomcat 8.0

本机tomcat环境:E:\Java\tomcat\apache-tomcat-8.0.26-windows-x64\webapps

本机解压路径:E:\Java\components\solr-6.6.0

二、部署solr

由于我在本地环境学习使用,所以下载window版本的zip包

1,首先确定安装了jdk 、tomcat、并下载了solr-6.6.0.zip

2,将solr-6.6.0.zip解压,找到E:\Java\components\solr-6.6.0\server\solr-webapp\webapp,并将webapp文件夹复制到tomcat的webapps下,并更名为solr(可以为任意名称)

3,拷贝solr-6.6.0\server\lib\ext下的jar包到tomcat下的webapps\solr\WEB-INF\lib路径下

   拷贝solr-6.6.0\dist 下的solr-dataimporthandler-6.6.0.jar、solr-dataimporthandler-extras-6.6.0.jar 包到tomcat下的webapps\solr\WEB-INF\lib路径下

      拷贝solr-6.6.0\server\lib下的metrics开头的5个jar到tomcat下的webapps\solr\WEB-INF\lib路径下

      (metrics-core-3.2.2.jar、metrics-ganglia-3.2.2.jar、metrics-graphite-3.2.2.jar、metrics-jetty9-3.2.2.jar、metrics-jvm-3.2.2.jar)

随便找一个位置新建一个目录(solr_home)将下面的内容复制到solr_home

4,拷贝solr-6.6.0\server\路径下的solr文件夹到非中文的目录下,我自己的目录(E:\Program Files\solr_home

5,修改tomcat下的webapps\solr\WEB-INF\web.xml,来指定solr/home

     搜索到:

   <env-entry> 
   <env-entry-name>solr/home</env-entry-name> 
   <env-entry-value>E:\Program Files\solr_home</env-entry-value> 
   <env-entry-type>java.lang.String</env-entry-type>
  </env-entry>

   将/put/your/solr/home/here修改为自己的solrhome路径

6,在tomcat的webapps\solr\WEB-INF路径下创建classes文件夹,然后将solr-6.6.0\server\resources文件夹下的log4j.properties拷贝过去

7,去掉权限,不然访问solr会出现没有授权的错误,打开webapps\solr\WEB-INF\web.xml,找到168行(我的环境是这个行号),添加注释

      例如:

<!--
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Disable TRACE</web-resource-name>
      <url-pattern>/</url-pattern>
      <http-method>TRACE</http-method>
    </web-resource-collection>
    <auth-constraint/>
  </security-constraint>
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Enable everything but TRACE</web-resource-name>
      <url-pattern>/</url-pattern>
      <http-method-omission>TRACE</http-method-omission>
    </web-resource-collection>
  </security-constraint>
-->

8,启动tomcat,在浏览器输入地址:http://127.0.0.1:8080/solr/index.html

新建core:

solr_home里面新建一个目录例如:core_demo

在webapps中solrhome下新建一个文件夹名字叫做core_demo(名字不固定,可以随便取,但是这个名字在后面的配置中会有所关联。)然后在core_demo文件下新建一个名字叫做conf的文件夹(这个文件名字最后不要改。)然后把官网下下来的solr项目中solr-6.0.0\server\solr\configsets\data_driven_schema_configs\conf下的所有东西复制到conf中去。(注意不要复制错!)最后把solr-6.0\solr-6.0.0\example\example-DIH\solr\db\conf下的admin-extra.html, admin-extra.menu-bottom.html ,admin-extra.menu-top.html三个文件也复制到conf中去。(也可以直接复制db文件夹里面的内容然后修改)

将上面的内容复制到:core_demo


添加到solr管理界面

将mysql数据库配置到solr:记得将mysql连接驱动放到lib

.编辑db-data-config.xml

复制代码

  
  
  1. <?xml version="1.0" encoding="UTF-8"?>  
    <dataConfig>  
        <dataSource name="source1" type="JdbcDataSource" driver="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://localhost:3306/test?serverTimezone=GMT" user="root" password="123456" batchSize="-1" />  
      <document>  
            <entity name="solr01" pk="id"  dataSource="source1"   
                    query="select * from  solr01"  
                     deltaImportQuery="select * from solr01 where id='${dih.delta.id}'"  
                    deltaQuery="select id from solr01 where updateTime> '${dataimporter.last_index_time}'">  
      
             <field column="id" name="id"/>  
            <field column="ston" name="ston"/>  
    			<field column="updateTime" name="updateTime"/>
         </entity>  
      </document>  
    </dataConfig>


复制代码

该配置文件配置数据源,以及查询数据表中数据

注意以下几点:出现时间错误时

“Unable to convert MySQL date/time value to System.DateTime”

原因:可能是该字段(date/datetime)的值默认缺省值为:0000-00-00/0000-00-00 00:00:00,这样的数据读出来转换成System.DateTime时就会有问题;

解决办法:
1、将该字段的缺省值设置为null,而不是0000-00-00/0000-00-00 00:00:00的情况;
2、在链接MySQL的字符串中添加:Convert Zero Datetime=True 和 Allow Zero Datetime=True两个属性;
3、将该字段设置成字符串类型;

  dataSource是数据库数据源。Entity就是一张表对应的实体,pk是主键,query是查询语句。Field对应一个字段,column是数据库里的column名,后面的name属性对应着Solr的Filed的名字。其中solrdata是数据库名,goods是表名。

  其中deltaQuery是增量索引,原理是从数据库中根据deltaQuery指定的SQL语句查询出所有需要增量导入的数据的ID号。然后根据deltaImportQuery指定的SQL语句返回所有这些ID的数据,即为这次增量导入所要处理的数据。核心思想是:通过内置变量“${dih.delta.id}”和 “${dataimporter.last_index_time}”来记录本次要索引的id和最近一次索引的时间


.保证查询的字段必须包含数据表的主键

.配置文件中的field节点对应数据表中的列名及索引名(name)

.datasource节点中配置数据源 entity节点配置一个实体 deltaQuery属性是配置增量获取数据的SQL

.注意一定要将数据库的驱动拷贝到${solr.home}/server/solr-webapp/webapp/WEB-INF/lib 下

 

3.编辑${solr.home}/server/solr/${core.name}/conf/managed-schema

注意修改unqiuekey节点值为topicId (对应<field name="topicId" column="topic_id" />中的name属性)

并增加以下配置:

  
  
  1. <field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" />  
  2. <field name="name" type="string" indexed="true" stored="false"/>  
  3. <field name="number" type="int" indexed="true" stored="false"/>  
  4. <field name="updateTime" type="date" indexed="true" stored="true" />  
  5.    <field name="_version_" type="long" indexed="true" stored="false"/>  
  6.    <field name="_root_" type="string" indexed="true" stored="false" docValues="false" />  
  7.    <field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/>  

注意:

必须修改unqiueKey的节点内容为对应的主键信息,这一步很重要

field节点对应db-data-import.xml中的field节点 其中他们的name属性保持一致

  把mysql所需的jar包和solr-6.0\solr-6.0.0\dist下的solr-dataimporthandler-6.0.0.jar和solr-dataimporthandler-extras-6.0.0.jar都复制到项目WEB-INF\lib下。然后在solrconfig.xml文件中加入<lib dir="D:/编程工具/tomcat/apache-tomcat-8.0.32-windows-x64/apache-tomcat-8.0.32/webapps/solr/WEB-INF/lib/" regex=".*\.jar" />(就是把WEB-INF\lib里面的jar包配置到项目中,我这里用的是绝对地址。这段代码大约在solrconfig.xml的70多行处,前面有一堆类似的代码。

在solrconfig.xml的  <requestHandler name="/select" class="solr.SearchHandler">之上添加

[html]  view plain  copy
  1. <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">  
  2.       <lst name="defaults">  
  3.          <str name="config">data-config.xml</str>  
  4.       </lst>  
  5.  </requestHandler>  

四 将数据库的数据导入到solr中

在工作台上运行该功能即可,需要标注的地方都标红:

 

 

 五:验证是否成功:

 

与中文分词器的适配

1.smart-cn

从 solr-6.6.0/contrib/analysis-extras/lucene-libs 下拷贝 lucene-analyzers-smartcn-6.6.0 到 apache-tomcat-9.0.0.M20/webapps/solr/WEB-INF/lib 目录下。

  1. 打开 solrhomenew_coreconf 下的managed-scheme 文档

  2. 加入以下内容

     <fieldType name="text_sm" class="solr.TextField">
         <analyzer class="org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer" />
     </fieldType>

    或者可以使用TokenizerFactory

    <fieldType name="text_sm" class="solr.TextField" positionIncrementGap="0">
    <analyzer type="index">
      <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
    </analyzer>
    <analyzer type="query">
       <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
    </analyzer>
    </fieldType>
  3. 使用成果展示

2.IKAnalyzer

这里有最新适配 solr6.6 的 IKAnalyzer,这里是 适配攻略
进入可下载. 下载地址
下载后,将IKAnalyzer.jar 包 拷贝到 apache-tomcat-9.0.0.M20/webapps/solr/WEB-INF/lib 目录下

  1. 打开 solrhomenew_coreconf 下的managed-scheme 文档

  2. 加入以下内容

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

    或者可以使用TokenizerFactory

    <fieldType name="text_ik" class="solr.TextField">
    <analyzer type="index">
      <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/>
    </analyzer>
    <analyzer type="query">
       <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/>
    </analyzer>
    </fieldType>
  3. 成果展示



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值