Mac下solr的安装配置

前提:本地已安装配置好jdk+tomcat+mysql

本地安装solr

1.路径:/itripProject/爱旅行项目资料/课程资料/solr/solr-4.9.1/dist/solr-4.9.1.war,将solr-4.9.1.war文件复制到tomcat的webapps目录下,并将文件重命名为solr.war

2.复制 solr解压包下example\lib\ext 下所有的jar 到tomcat 的lib目录下

3.配置solr所需文件:在计算机本地新建一个文件夹solr_home(名字自定义), 然后复制
solr-4.9.1\example\solr 下的所有文件到 solr_home下

4.启动tomcat,待tomcat启动成功后,关闭tomcat。打开tomcat的webapps目录。注意,此时solr的war包以及被解压成solr文件夹。删除tomcat 的webapps目录下的solr的war
包,保留solr文件夹。
(注意:一定要关闭tomcat以后再删除solr.war,否则会导致解压出的solr一同被删)

# tomcat的启动
cd apache-tomcat-8.5.43/
ls
bin/startup.sh
# tomcat的关闭
bin/shutdown.sh



5.修改配置文件 apache-tomcat-7.0.67\webapps\solr\WEB-INF\web.xml 中solr_home的安装路径

<env-entry> 
<env-entry-name>solr/home</env-entry-name>  
<env-entry-value> F:/solr_home</env-entry-value> 
<env-entry-type>java.lang.String</env-entry-type> 
</env-entry> 

6.访问solr(http://localhost:端口号/solr/),如出现以下界面则solr安装部署成功。

新建solr核心配置并配置数据库相关(数据源导入)

1.在solr_home目录下,拷贝collection1文件夹,并起名为hotel。打开hotel文件夹,修改core.properties文件,将name修改为hotel

2.重新启动tomcat,并访问solr,如出现以下界面,则表示新建hotel core成功。

3.拷贝数据库连接jar包(mysql-connector-java-5.1.31.jar)到tomcat的lib目录

4.打开hotel的conf文件夹中的solrconfig.xml文件,在requestHandler name="/select" class=“solr.SearchHandler”>前面上加上一个dataimport的处理的Handler(处理器)

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
      <lst name="defaults">
        <str name="config">data-config.xml</str>
      </lst>
</requestHandler>


并把配置文件名称data-config.xml复制下来备用,保存关闭。

5.在hotel的的conf文件夹下并新建data-config.xml文件,配置如下:
(注意修改数据库密码)

<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/itripdb" user="root" password="123456" />
<document name="hotel_doc">
	<entity name="hotel" pk="id"  query=" select id,hotelName,address from itrip_hotel">
		<field column="id" name="id"/>
		<field column="hotelName" name="hotelName"/>
		<field column="address" name="address"/>
	</entity>
</document>
</dataConfig>
名词解释:
dataSource是数据库数据源。
Entity就是一张表对应的实体,pk是主键,query是查询语句。
Field对应一个字段,column是数据库里的column名,后面的name属性对应着Solr的Filed 的名字。

6.编辑hotel的conf目录下的schema.xml文件
找到_version_ 这个field保留,从_version_往后开始删,保留text这个field,接着往后删到uniqueKey保留,往后删到filedType为止。

7.添加字段

 <field name="id" type="string" indexed="true" stored="true"/>
 <field name="hotelName" type="string" indexed="true" stored="true"/>
 <field name="address" type="string" indexed="true" stored="true"/>

添加的索引字段:这里每个field的name要和data-config.xml里的entity的field的name一样

保存关闭
8.将路径 /itripProject/爱旅行项目资料/课程资料/solr/solr-4.9.1/dist 导入数据的JAR包拷贝到tomcat/webapps/solr/WEB-INF/lib下

9.重启tomcat,出现如下内容则数据源导入配置成功:
(表示总共导入63条索引数据)


如果报错找不到核心,首先检查jar包放的位置对不对,还有问题就检查配置文件,尤其要注意单词的大小写问题。

配置增量更新

1.将资料中 /爱旅行项目资料/课程资料/solr/素材资料/ 下提供的apache-solr-dataimports-cheduler.jar包添加至tomcat/webapps/solr/WEB-INF/lib下

注:apachesolrdataimportscheduler.jar的jar包是apache提供的用于增量更新的jar包
scheduler:调度器

2.增加增量更新配置文件,在solr_home文件夹下新建conf文件夹,并新建名为 dataimport.properties的配置文件,配置如下,标红的地方为需要修改的地方

# 是否同步功能
# 1 - 开启 ; 否则不开启 
syncEnabled=1
# 需要同步的solr core 
syncCores=hotel
# solr server名称或ip地址
# 默认为localhost
server=localhost
# solr server端口
# 默认80
port=8080
# webapp name
webapp=solr
#  增量索引的参数   
params=/dataimport?command=delta-import&clean=false&commit=true
#  重做增量索引的时间间隔  
#  默认30分钟
interval=1
#  重做全量索引的时间间隔,单位分钟,默认7200,即5;  
#  为空,0,或者注释掉:表示永不重做索引  
reBuildIndexInterval=10
#  重做索引的参数  
reBuildIndexParams=/dataimport?command=full-import&clean=true&commit=true
#  重做索引时间间隔的计时开始时间,第一次真正执行的时间=reBuildIndexBeginTime+reBuildIndexInterval*60*1000;  
#  两种格式:2012-04-11 03:10:00 或者  03:10:00,后一种会自动补全日期部分为服务启动时的日期  
reBuildIndexBeginTime=03:10:00

3.新增增量更新数据的监听器,在tomcat/webapps/solr/WEB-INF/web.xml中加入以下监听器

  <listener>
    <listener-class>org.apache.solr.handler.dataimport.scheduler.ApplicationListener</listener-class>
  </listener>


4.到solr_home/hotel/conf/data-config.xml修改导入数据查询SQL,在标签entity的属性query后面增加

deltaImportQuery="select id,hotelName,address from itrip_hotel where id='${dih.delta.id}'" 
deltaQuery="SELECT id as id  FROM itrip_hotel where modifyDate > '${dih.last_index_time}'">  

说明:deltaQuery是根据dataimport.properties配置文件中的更新时间,从数据库中查询出,修改日期在最后一次更新日期之后的酒店数据,并记录其id,而deltaImportQuery的目的是将 deltaQuery查询出的数据导入到solr中

deltaImportQuery : (仅用于增量导入) .指定增量导入实体数据的查询SQL。如果没有指定该查询语句,solr将使用query属性指定的语句,经修改后来查询加载增量数据(这很容易出错)。在该语句中往往需要引用deltaQuery查询结果的列值,通过 ${dih.delta.} 来引用。

deltaQuery:用于增量导入,将更新过的数据查询出来,条件是 修改时间大于导入时间

5.测试增量更新是否成功
重启Tomcat,访问hotel模块,进行Dataimport
修改数据库中的酒店数据并同时修改该数据的modifyDate时间,
单击执行查询Execute Query(不需要再进行数据导入),1分钟后检查酒店数据,确定数据已更新

配置IK分词器

分词器: 是从用户输入的一段文本中提取关键词,用于其它业务操作。
 常见的 JAVA 分词器: word 分词器、Ansj 分词器、Stanford 分词器、IKAnalyzer 分词器
 solr 如果是 3.x 版本的用 IKAnalyzer2012_u6.zip 如果是 4.x 版本的用 IK Analyzer
2012FF_hf1.zip,一定要对应上,要不然会配置失败。
 IK 分词器下载地址: http://download.csdn.net/download/tjcyjd/8420639

1.下载解压IKAnalyzer 。

2.把IKAnalyzer2012FF_u1.jar放到tomcat/webapps/solr/WEB-INF/lib下

3.在tomcat/webapps/solr/WEB-INF/下新建classes文件夹,将IKAnalyzer.cfg.xml和stopword.dic文件拷贝到改文件夹下

4.在 solr_home\hotel\conf\schema.xml 增加如下配置,放在uniqueKey上面,并修改address的type=“text_ik”,用于对比测试分词效果。

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


5.重启tomcat,在hotel核心下的Aanlysis(分析,分解)下测试分词效果,出现如下页面成功

6.直接复制封装好的hotel文件夹到solr_home下,替换原来用于学习的hotel,出现下图成功

data-config.xml修改数据库密码
schema.xml定义了字段和分词的字段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值