单机版solr配置
1、solr介绍
2、solr安装及配置
3、solrj(solr客户端)链接solr
4、solr集群的安装配置
5、与项目整合(搭建搜索服务层)
6、使用protal调用搜索服务,实现商品搜索
卖家:商家,导入索引库
买家:搜索商品 从solr索引库中索引
- solr介绍
solr概念
• Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。
• Solr是一个全文检索服务器,只需要进行配置就可以实现全文检索服务。
• Solr使用java开发的一个web应用
solr特点
• 高级的全文搜索功能
• 专为高通量的网络流量进行的优化
• 基于开放接口(XML和HTTP)的标准
• 综合的HTML管理界面
• 可伸缩性-能够有效地复制到另外一个Solr搜索服务器
• 使用XML配置达到灵活性和适配性
• 可扩展的插件体系
Solr vs Lucene
Solr与Lucene 并不是竞争对立关系,恰恰相反Solr 依存于Lucene,因为Solr底层的核心技术是使用Lucene 来实现的,Solr和Lucene的本质区别有以下三点:搜索服务器,企业级和管理。
Lucene本质上是搜索库,不是独立的应用程序,而Solr(java写的web项目)是。
Lucene专注于搜索底层的建设,而Solr专注于企业应用。
Lucene不负责支撑搜索服务所必须的管理,而Solr负责。所以说,一句话概括 Solr: Solr是Lucene面向企业搜索应用的扩展。
Es - solr的安装
准备环境
安装jdk
安装tomcat
解压缩:tar -xvzf apache-tomcat-xxx.tar.gz
Tomcat启动
./startup.sh
./shutdown.sh
solr安装
3.1.1. 安装包拷贝到linux上,解压
3.1.2. 解压solr-4.10.3.war
将solr-4.10.3/dist\solrXXX.war重命名为solr,复制到tomcat的webapps下
3.1.3. 添加solr的扩展服务包
日志包:/opt/install/solr-4.10.3/example/lib/ext
拷贝到 apache-tomcat-xxx/webapps/solr/WEB-INF/lib下
3.1.4. 复制日志配置文件到solr下
/opt/install/solr-4.10.3/example/resources/log4j.properties
复制到/usr/local/tomcat/webapps/solr/WEB-INF/classes/下
3.1.5. 修改solr/webapps/WEB-INF/web.xml文件
配置solrhome的位置
solr/home
/usr/local/solr/solrhome
Java.lang.String
3.1.6. solrhome和solrcore的安装
1) 创建目录/usr/local/solr/solrhome
2) solrCore的安装
将solr-4.10.3/example/solr/路径下的所有文件复制到
/usr/local/solr/solrhome下
collection1目录就是一个solrcore
3.1.7. 测试
solr配置成功界面
http://192.168.82.180:8085/solr
如果报错500
解决:1)检查solr的应用web.xml配置是否正确
2)重启tomcat
./shutdown.sh
./startup.sh
4. solr基于项目的配置
4.1 配置中文分词器
1. 把IKAnalyzer2012FF_u1.jar 复制到solr的lib下
2. 把扩展词典复制到solr项目的WEB-INF/classes下
3. 配置FieldType 指定IKAnalyzer
修改/usr/local/solr/solrhome/collection1/conf/schema.xml文件
在最后添加FiledType
起名为:text_ika (任意),不能与其他重复
4.2需要的Field
编号(solr默认有id域不需要配置,将主键放在默认的id上)
商品标题
卖点
价格
图片
分类
描述
4.3配置Field
在fields结点内定义具体的字段(类似数据库中的字段),就是field。
field定义包括name,type(为之前定义过的各种FieldType),indexed(是否被索引),stored(是否被储存),multiValued(是否有多个值)等等。
field的定义相当重要,有几个技巧需注意一下,对可能存在多值得字段尽量设置 multiValued属性为true,避免建索引抛出错误;
如果不需要存储相应字段值,尽量将stored属性设为false。
4.4重启tomcat
4.5访问solr服务
4.6测试
4.6.1 solrJ客户端
org.apache.solr
solr-solrj
4.6.2 solrJ的使用
public class SolrJTest {
@Test
public void addDocument() throws Exception {
//创建一连接
SolrServer solrServer = new HttpSolrServer("http://10.40.155.196:8080/solr");
//创建一个文档对象
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "1001");
document.addField("item_title", "锤子手机");
document.addField("item_price", 2000);
//把文档对象写入索引库
solrServer.add(document);
//提交
solrServer.commit();
}
@Test
public void deleteDocument() throws Exception {
//创建一连接
SolrServer solrServer = new HttpSolrServer("http://192.168.82.154:8080/solr");
//solrServer.deleteById("test001");
solrServer.deleteByQuery("*:*");
solrServer.commit();
}
@Test
public void QuerySolr() throws Exception {
//创建一连接
SolrServer solrServer = new HttpSolrServer("http://192.168.82.154:8080/solr");
SolrQuery solrQuery = new SolrQuery();
solrQuery.setQuery("100");//设置查询条件
solrQuery.set("df", "item_price");//item_title item_category_name
//执行查询
QueryResponse response = solrServer.query(solrQuery);
SolrDocumentList document = response.getResults();
System.out.println(document);
for (SolrDocument solrDocument : document) {
System.out.println(solrDocument.get("item_title")+"--"+solrDocument.get("item_price"));
}
}
}