lhc0 2015-04-03
一、环境准备:
系统环境:ubuntu14.04
tomcat 8.0.20
jdk 1.8.0_40
solr-5.0.0
二、安装solr
1、下载solr官网地址: http://apache.fayea.com/lucene/solr/5.0.0/
2、解压solr
solin@solin:~/package$ tar -zxvf solr-5.0.0.tgz
3、进入solr-5.0.0/server/webapps并解压war包
solin@solin:~/package$ cd /solr5.0/solr-5.0.0/server/webapps
solin@solin:~/package$ jar -xvf solr.war
4、进入solr-5.0.0/server/webapps/WEB-INF,修改web.xml
solin@solin:~/package$ cd solr-5.0.0/server/webapps/WEB-INF/
solin@solin:~/package$ vim web.xml
将env-entry注释放开,修改env-entry-value的文件路径
<env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>/solr-5.0.0/example/example-DIH/solr</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
5、复制/solr-5.0.0/server/lib/ext下的jar包到/solr-5.0.0/server/webapps/WEB-INF/lib下
solin@solin:~/package$ cp /solr-5.0.0/server/lib/ext/*.jar /solr-5.0.0/webapps/WEB-INF/lib
6、编辑tomcat server.xml
solin@solin:~/package$ vim tomcat 8.0.20/config/server.xml
<Context path="/solr" docBase="/solr-5.0.0/server/webapps" reloadable="true" crossContext="true"/>
7、到此配置完成,重启tomcat
solin@solin:~/package$ cd tomcat 8.0.20/bin/
solin@solin:~/package$ ./startup.sh
8、浏览器访问http://localhost:8080/solr进入solr管理页面
三、solr将数据库做成索引数据源(mysql),solr5.0默认创建了datainport
1、修改数据源solr-data-config.xml(solr-5.0.0/example/example-DIH/solr/solr/conf/)
<?xml version="1.0" encoding="UTF-8"?> <dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/lingcai" user="root" password="123456"/> <document name="article"> <entity name="article" query="select id,title,content,createtime from tab_article" transformer="ClobTransformer"> <field column="id" name="id" /> <field column="title" name="title" /> <field column="content" name="conten" /> <field column="createtime" name="createtime" /> </entity> </document> </dataConfig>
2、将mysql驱动包放入/solr-5.0.0/webapps/WEB-INF/lib下
附件下载
3、配置完成,创建索引:http://localhost:8080/solr/dataimport?command=full-import
4、查看是否导入成功:http://localhost:8080/solr/#/solr/query
四、配置IK中文分词
1、下载ik包,见附件
2、将ik包放入/solr-5.0.0/webapps/WEB-INF/lib下
3、编辑schema.xml文件,在文件中添加如下代码:
<!--filed--> <field name="ik" type="text_ik" indexed="true" stored="true" multiValued="false" /> <!--filedType--> <fieldType name="text_ik" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType>
4、重启tomcat
5、配置完成,进行测试:http://localhost:8080/solr/#/solr/analysis
五、solr索引数据备份
1、备份solr数据文件分为两种方式:冷备份和热备份
所谓冷备份就是指关闭solr,然后将SOLR_HOME/data下面的所有数据拷贝到一个安全的位置。这种方法简单,可靠,index数据文件不会产生不一致。但是缺点很明显,就是系统要关闭,如果数据量大的话,整个复制过程会比较长。
热备份方法比较实用,也就是利用Solr Replication Handler!Replication Handler的主要作用是在一个load-balancing的solr部署架构中,将index数据复制到各个slave服务器上。但是,即使在没有任何slave服务器的情况下,Replication Handler也可以用来在主服务器上创建index的副本。
2、配置solrconfing.xml(Replication Handler)
<requestHandler name="/replication" class="solr.ReplicationHandler" > <lst name="master"> <str name="replicateAfter">commit</str> <str name="replicateAfter">startup</str> <str name="confFiles">schema.xml,stopwords.txt</str> </lst> <lst name="slave"> <str name="masterUrl">http://localhost:8088/solr/solr/replication</str> <str name="pollInterval">00:00:60</str> </lst> </requestHandler>
3、重启系统,执行备份
<!--默认备份到solr/data下,文件类似snapshot.20131127105721594的目录,这目录就是备份出来的索引库--> http://localhost:8080/solr/replication?command=backup <!--&location=/home/solin/document/solr/solr_bak,location代表指定备份地址--> http://localhost:8088/solr/replication?command=backup&location=/home/solin/document/solr/solr_bak
4、solr索引恢复步骤
(1)停止solr服务器
(2)复制备份的索引到solr/data/index下
(3)重启solr服务器
六、solr实现竞价排名
1、配置solrconfig.xml
<searchComponent name="elevator" class="solr.QueryElevationComponent" > <!-- pick a fieldType to analyze queries --> <str name="queryFieldType">string</str> <str name="config-file">elevate.xml</str> </searchComponent> <!-- A request handler for demonstrating the elevator component --> <requestHandler name="/elevate" class="solr.SearchHandler" startup="lazy"> <lst name="defaults"> <str name="echoParams">explicit</str> <str name="df">text</str> </lst> <arr name="last-components"> <str>elevator</str> </arr> </requestHandler>
2、配置elevate.xml
<elevate> <!--text为查询关键字--> <query text="测试"> <!--id为竞价名次,配置越靠前搜索的排名越靠前--> <doc id="7141"/> <doc id="6916"/> <doc id="6912"/> </query> </elevate>
3、重启后,访问http://localhost:8088/solr/solr/elevate?q=测试&wt=json&indent=true