solr安装启动
这里演示的是Windows下的安装 Linux下安装同理
下载地址:http://lucene.apache.org/solr
测试版本:solr-4.10.3 apache-tomcat-7.0.47(由于solr自带服务器不稳定)
下载解压后在文件 D:\Solr\solr-4.10.3\example\webapps中找到solr的war包
将其放入tomcat webapp目录下
修改D:\Solr\apache-tomcat-7.0.47\webapps\solr\WEB-INF 下的web.xml中存放solr家的位置
将D:\Solr\solr-4.10.3\example\solr中collection文件复制到指定位置↑
再在Tomcat的webapps\solr\WEB-INF\lib中导入solr启动所需依赖:
启动Tomcat 测试是否成功http://localhost:8080/solr/
IK分析器
由于solr自带的几种中文分析器 不能满足我们的中文分词需求 现配置IKAnalyzer分析器 配置如下:
找到所配置配置solr核(collection1)的位置 在其config文件中schema.xml 添加内容:
在Tomcat的webapps\solr\WEB-INF中创建classes文件夹(相当于src资源文件),用于存放IKAnalyzer分析器的扩展配置
创建IkAnalyzer.cfg.xml文件 配置扩展字典的存放位置
创建其余两个.dic文件存放所需数据 启动Tomcat 打开网站查看是否成功
solr后台管理界面数据的导入
在collection1文件夹中创建lib文件夹,用以存放所需jar包(2个solr自带包 1个mysql驱动包)
在collection1\conf文件下 打开solrconfig.xml添加如下配置:
再在当前目录创建data-config.xml文件 添加数据库配置:
打开schema.xml 添加product配置
配置完成后打开solr后台管理界面
SolrJ
solrJ是访问Solr服务的JAVA客户端,提供索引和搜索的请求方法,SolrJ通常嵌入在业务系统中,通过solrJ的API接口操作Solr服务。
准备工作:
将solr-4.10.3\dist\solrj-lib的所有jar包
solr-4.10.3\dist下solr-solrj-4.10.3.jar(solr核心包)
solr-4.10.3\example\lib\ext下的所有jar包
放入eclipse(创建一个Java工程 添加lib文件)
案例:添加 删除 修改 查询(高亮)
public class TestSolrJ {
//添加&修改(id相同 就是修改 不同就是添加)
@Test
public void Testname()throws Exception{
//创建Solr的客户端链接对象
String baseURL="http://localhost:8080/solr/";
//单机版
SolrServer solrServer = new HttpSolrServer(baseURL);
//创建一个文档对象
SolrInputDocument doc = new SolrInputDocument();
doc.setField("id", "111"); //域(要存在) 值
doc.setField("name", "张叁");
//doc.addField("name", "用法一样");
//添加
solrServer.add(doc);
solrServer.commit();
}
//删除
@Test
public void Deletename()throws Exception{
//创建Solr的客户端链接对象
String baseURL="http://localhost:8080/solr/";
SolrServer solrServer = new HttpSolrServer(baseURL);
solrServer.deleteById("111"); //删除id为111的
solrServer.deleteByQuery("name:张叁"); //根据条件删除
solrServer.commit();
}
//查询
@Test
public void Queryename()throws Exception{
//创建Solr的客户端链接对象
String baseURL="http://localhost:8080/solr/";
SolrServer solrServer = new HttpSolrServer(baseURL);
//创建solr的查询对象
SolrQuery sq=new SolrQuery();
//设置查询条件
sq.set("q","name:李四" );
//多条件查询
// sq.set("q","name:李四 AND age:18 OR phone:110" );
//设置过滤条件
// sq.set("fq", "age:[1 TO 20]");
//设置排序
// sq.addSort("wages", ORDER.desc);
//设置分页
// sq.setStart(0); //开始位置
// sq.setRows(5); //每页3条
//开启高亮
sq.setHighlight(true);
sq.addHighlightField("item_title");//设置高亮域
sq.setHighlightSimplePre("<div style='color:red'>");//前缀
sq.setHighlightSimplePost("</div>");//后缀
//查询
QueryResponse qr=solrServer.query(sq);
//获取查询结果
SolrDocumentList sds=qr.getResults();
//获取查询的记录数
long index=sds.getNumFound();
System.out.println("数量:"+index);
for(SolrDocument sd:sds){//默认取出10条记录
String id=(String) sd.getFieldValue("id");
String name=(String) sd.getFieldValue("name");
System.out.println("我是华丽丽的分割线====================================");
System.out.println("id:"+id);
System.out.println("name:"+name);
//获取高亮显示的结构
Map<String, Map<String, List<String>>> highlighting=qr.getHighlighting();
if(highlighting!=null){
//根据Id获得每个域的高亮内容
Map<String, List<String>> map=highlighting.get(id);
//根据具体的域获取高亮内容
List<String> list=map.get("name");
if(list!=null && !list.isEmpty()){
for(String str:list){
System.out.println("高亮内容:"+str);
}
}
}
}
}
}
SolrJ(与spring整合)
首先在spring配置文件(application-solr)中配置相关的Ben
<bean id="httpSolrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer">
<constructor-arg index="0" value="http://ip地址:solr服务的Tomcat端口号/solr/collection1"/>
</bean>
再通过注解@Autowired 注入SolrServer
然后调用其.add方法就可以吧对象写入索引库 记得.commit提交