solr及相关配置

mysql
  1. rpm -qa | grep mysql 查询本地mysql

  2. rpm -e mysql-libs-5.1.66-2.el6_3.x86_64 --nodeps 删除查询到的本地mysql

  3. yum -y install mysql-devel mysql-server 通过网络安装MySQL (yum)

  4. 启动服务 mysqld start

开机自启动 chkconfig mysqld on

  1. 设置用户和密码 /usr/bin/mysqladmin -uroot password ‘123456’

  2. 进入 mysql -uroot -p123456

  3. 查看mysql用户 select host,user,password from mysql.user;

  4. GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION; 修改访问远程权限

  5. 重载授权表: FLUSH PRIVILEGES;

  6. vi /etc/sysconfig/iptables 修改防火墙

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT 添加一行(3306)

shift+: --> wq保存

  1. 在navicat中添加虚拟机数据库

  2. 添加完成后可以将auth模块的db.properties中的url修改为虚拟机数据库的

mysql.jdbcUrl=jdbc:mysql://192.168.11.130/itripdb?useUnicode=true&characterEncoding=UTF-8
jdk
  1. 将jdk-8u111-linux-x64.tar.gz 安装包放到linux opt目录下

  2. tar -zxvf jdk-8u111-linux-x64.tar.gz 在opt目录下解压jdk包

  3. vi /etc/profile 修改配置文件,在最下面添加

export JAVA_HOME=/opt/jdk1.8.0_111
  export PATH=$PATH:$JAVA_HOME/bin
  1. 保存配置,source /etc/profile
  2. java -version查询java配置信息,发现1.8.0即配置成功
tomcat
  1. 将apache-tomcat-8.5.4.tar.gz 安装包放到linux opt目录下

  2. tar -zxvf apache-tomcat-8.5.4.tar.gz 在opt目录下解压jdk包

  3. vi /etc/sysconfig/iptables 修改防火墙

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080-j ACCEPT 添加一行(3306)

shift+: --> wq保存

service iptables restart 重启防火墙

此时启动tomcat可以访问tomcat网站

solr
  1. 下载并解压solr4.9.1的程序安装包。

  2. dist\solr-4.9.1.war文件复制到tomcat的webapps目录下,并将文件命名为solr.war

(这里操作的tomcat是linux下的)
  1. 复制 solr解压包下example\lib\ext 下所有的jar 到tomcat 的lib目录下

  2. 在计算机本地新建一个文件夹solr_home(当然你可以随便起名字), 然后复制
    solr-4.9.1\example\solr 下的所有文件到 solr_home下(没有的文件夹可以新建)

​```linux
mkdir /data/solr_home
​```
  1. 在/opt/apache-tomcat-8.5.4目录下使用bin/startup.sh启动tomcat,待tomcat启动成功后,关闭tomcat。打开tomcat的webapps目录。注意,此时solr的war包以经被解压成solr文件夹。删除tomcat 的webapps目录下的solr的war包,保留solr文件夹。

  2. bin/shutdown.sh停止tomcat,修改配置文件 apache-tomcat-7.0.67\webapps\solr\WEB-INF\web.xml

<env-entry> 
<env-entry-name>solr/home</env-entry-name>  
<env-entry-value>/data/solr_home</env-entry-value> 
<env-entry-type>java.lang.String</env-entry-type> 
</env-entry>
  1. 启动tomcat访问192.168.11.130:8080/solr,即可访问solr网站
新建数据配置 core
  1. 在linux下data目录创建hotel目录

  2. 将本地目录 ./solr-4.9.1/example/solr/collection1 下的所有文件复制到hotel目录

  3. 修改core.properties文件,将name修改为hotel,新启动tomcat,并访问solr,如界面左侧可以看见hotel,则表示新建 core 成功

新增数据库配置
  1. 拷贝数据库连接jar包(mysql-connector-java-5.1.18.jar)到tomcat的lib目录

  2. 打开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>
  1. 在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>

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

  1. 修改同目录下的schema.xml(schema.xml 是solr对数据库里的数据进行索引管理和数据字段展示管理的配置文件)

删除多余的field,保留_version_ 和test这两个field(注意不要删除fieldType)
删除copyfiled和动态filed

(从version下到text为止中间的删除,text下到id为止中间删除,id下到fieldType为止中间删除,如下所示保留)

<field name="_version_" type="long" indexed="true" stored="true"/>
<field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
 
<uniqueKey>id</uniqueKey>
  
<fieldType name="string" class="solr.StrField" sortMissingLast="true" />

添加三行参数后如下所示

<field name="_version_" type="long" indexed="true" stored="true"/>
<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="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
 
<uniqueKey>id</uniqueKey>

  1. 将导入数据的JAR包拷贝到webapps/solr的lib目录下(\solr\solr-4.9.1\dist 下

solr-dataimporthandler-4.9.1.jar 和 solr-dataimporthandler-extras-4.9.1.jar)

  1. 重启tomcat,进入solr网站,下拉菜单选中hotel,选中Dataimport,点击Execute,如没加载出来点击Refresh Status进行刷新,如右侧显示已导入可以点击Query下的Execute Query进行查询
配置增量更新
  1. 将apache-solr-dataimports-cheduler.jar包添加至solr的lib目录下 (/opt/apache-tomcat-8.5.4/webapps/solr/WEB-INF/lib)

注:apachesolrdataimportscheduler.jar的jar包是apache提供的用于增量更新的jar包,但
apache提供的原jar包中,代码有BUG。该bug在教学资料提供的jar包中已经被修复,具体可参
考提供的apachesolrdataimportscheduler的源码

  1. 增加增量更新配置文件,在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

  1. 新增增量更新数据的监听器,在solr的web.xml中加入以下监听器(/opt/apache-tomcat-8.5.4/webapps/solr/WEB-INF/web.xml)
<listener>
  <listener-class>
          org.apache.solr.handler.dataimport.scheduler.ApplicationListener
    </listener-class>
</listener>
  

  1. 将/data/solr_home/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"
			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}'">  

		<field column="id" name="id"/>
		<field column="hotelName" name="hotelName"/>
	<field column="address" name="address"/>
	</entity>
</document>
</dataConfig>

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

  1. 启动Tomcat进行测试
  2. 启动Tomcat,访问hotel模块
  3. 修改数据库中的酒店数据并同时修改该数据的modifyDate时间,
  4. 1分钟后查询酒店数据,确定数据是否更新
配置分词器

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

  1. 将ik的所有jar文件 拷贝到 webapps\solr\WEB-INF\lib 目录下

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

  3. 在 solr_home\hotel\conf\schema.xml 增加如下配置

<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> 
  1. 修改solr_home\hotel\conf\schema.xml将hotelName和address指定成为text_ik类型
<field name="hotelName" type="text_ik" indexed="true" stored="true"/> 
<field name="address" type="text_ik" indexed="true" stored="true"/>
  1. 重启Tomcat,访问solr测试分词器,Analysis,在Field Value(index)中输入词条查询,点击返回结果则成功
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值