Solr的安装步骤
- 首先安装jdk
- 然后安装tomcat
- 然后解压缩solr安装包
- 复制 solr下的example/webapps目录下的solr.war复制到tomcat目录下的webapps下,
- 启动tomcat,关闭tomcat ,删除solr.war
- 复制solr目录下的lib/ext的所有jar到tomcat目录下的webapps/webapps/solr/WEB-INF/lib下
- 然后复制solr目录下example/solr所有文件到你自己创建的SolrHome文件夹下
- 修改tomcat下webapps/solr/WEB-INF/web.xml指定自己的solrhome
- 添加中文分析器IKAnalyzer2012FF_u1,我们解压缩IKAnalyzer2012FF_u1,然后把IKAnalyzer2012FF_u1.jar复制到tomcat下的solr工程lib文件夹下
- 在tomcat的solr工程中创建一个WEB-INF/classes然后复制IKAnalyzer2012FF_u1下的扩展文件,配置文件到该目录下
- 修改solrHome下的collection1/conf/schema.xml,添加一个fieldType
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
- 配置自己的业务域
<field name="item_title" type="text_ik" indexed="true" stored="true"/>
- 可以使用复合键
<copyField source="item_title" dest="item_keywords"/>
Solr集群的配置
- 配置solr集群,我们需要配置zookeeper集群
- zookeeper集群的配置可以参考我的dubbo使用中
- 我们需要复制配置过solr服务的tomcat复制4份,然后创建响应的SolrHome 然后修改各自的solr工程的web.xml指定自己的SolrHome,然后修改每个tomcat的server.xml的文件改变其端口(如果在一个机器上),但是我们需要在tomcat的bin目录下的catalina.sh,然后添加以下代码
JAVA_OPTS="-DzkHost=192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183"
配置zookeeper集群的地址 - 启动各个zookeeper
- 修改各个solrhome下的collection1下的solr.xml指定自己对应的tomcat服务
- 我们使用解压缩的solr目录下的example/scripts/cloud-scripts/ 下使用命令
./zkcli.sh -zkhost 192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf -confname myconf
随便找个solrhome下的配置上传。 - 启动各个tomcat
- 创建新的Collection进行分片处理。
http://192.168.25.154:8180/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2 - 删除不用的Collection。
http://192.168.25.154:8180/solr/admin/collections?action=DELETE&name=collection1
Solr的使用
添加索引
//单机版
SolrServer solrServer=new HttpSolrServer("http://192.168.25.154:8080/solr");
//集群版SolrServer solrServer=new CloudSolrServer(zookeeper集群的地址)
SolrInputDocument document=new SolrInputDocument();
document.addField("id", itemIndex.getId());
document.addField("item_title",itemIndex.getTitle());
document.addField("item_sell_point", itemIndex.getSell_point());
document.addField("item_price",itemIndex.getPrice());
document.addField("item_image", itemIndex.getImage());
document.addField("item_category_name",itemIndex.getCategory_name());
document.addField("item_desc",itemIndex.getItem_desc());
solrServer.add(document);
solrServer.commit();
查询
SolrServer solrServer=new HttpSolrServer("http://192.168.25.154:8080/solr");
//创建一个solrquery
SolrQuery query=new SolrQuery();
query.setQuery(queryString);
//设置默认的查询field
query.set("df", "item_title");
//分页
query.setStart((page-1)*rows);
query.setRows(rows);
//开启高亮
query.setHighlight(true);
query.addHighlightField("item_title");
query.setHighlightSimplePre("<font color='red'>");
query.setHighlightSimplePost("</font>");
QueryResponse response=solrServer.query(query);
SolrDocumentList documentList=response.getResults();
Solr与Spring的整合
单机版
<bean id="solrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer">
<constructor-arg name="baseURL" value="http://10.118.16.75:8080/solr/collection1" />
</bean>
集群版
<bean id="solrServer" class="org.apache.solr.client.solrj.impl.CloudSolrServer">
<constructor-arg name="zkHost" value="10.118.16.75:2182,10.118.16.75:2183,10.118.16.75:2184"></constructor-arg>
<property name="defaultCollection" value="collection1"></property>
</bean>