1、solr可以集成到spring中,使用ioc进行控制
<!-- SolrServer的配置 -->
<bean id="httpSolrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer">
<!-- index=0 代表调用有一个构造参数的solrServer的构造方法 -->
<constructor-arg index="0" value="http://localhost:8080/solr"/>
</bean>
2、solr的增改删
@Test
public void testIndexCreate() throws Exception{
//创建和Solr服务端连接
SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr");
//创建solr文档对象
SolrInputDocument doc = new SolrInputDocument();
//域要先定义后使用,还有注意必须要有id主键域
//solr中没有专用的修改方法, 会自动根据id进行查找,如果找到了则删除原来的将新的加入就是修改,如果没找到,将新的直接加入则就是新增
doc.addField("id", "a001");
doc.addField("product_name", "台灯1`111");
doc.addField("product_price", "12.5");
//将文档加入solrServer对象中
solrServer.add(doc);
//提交
solrServer.commit();
}
@Test
public void testIndexDel() throws Exception{
//创建和Solr服务端连接
SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr");
//根据主键id进行删除
//solrServer.deleteById("a001");
//根据查询删除,这里是删除所有*:*
solrServer.deleteByQuery("*:*");
//提交
solrServer.commit();
}
3、solor的查询
@Test
public void testIndexSearch2() throws Exception{
//连接solr服务端
SolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr");
//创建solr查询条件对象
SolrQuery solrQuery = new SolrQuery();
//查询关键字输入
solrQuery.setQuery("台灯");
//设置默认搜索域
solrQuery.set("df", "product_keywords");
//设置过滤查询
solrQuery.addFilterQuery("product_price:[1 TO 100]");
//设置排序,这里是降序
solrQuery.setSort("product_price", ORDER.desc);
//=======设置分页========
//设置起始条数
solrQuery.setStart(0);
//设置查询多少条
solrQuery.setRows(50);
//========设置高亮显示=======
//高亮默认是关闭的,所以要手动开启
solrQuery.setHighlight(true);
//设置需要高亮显示的域
solrQuery.addHighlightField("product_name");
//设置高亮前缀
solrQuery.setHighlightSimplePre("<span style=\"color:red\">");
//设置高亮后缀
solrQuery.setHighlightSimplePost("</span>");
//===================查询并获取查询响应对象=====================================
QueryResponse queryResponse = solrServer.query(solrQuery);
//从查询响应中获取查询结果集对象
SolrDocumentList results = queryResponse.getResults();
//打印一共查询到多少条记录,也就是记录总数
System.out.println("=====count====" + results.getNumFound());
//遍历查询结果集
for(SolrDocument doc : results){
System.out.println("============="+doc.get("id"));
//获取高亮
Map<String, Map<String, List<String>>> highlighting = queryResponse.getHighlighting();
List<String> list = highlighting.get(doc.get("id")).get("product_name");
if(list != null && list.size() > 0){
String hlName = list.get(0);
System.out.println("=======high lighting=====" + hlName);
}
System.out.println("============="+doc.get("product_name"));
System.out.println("============="+doc.get("product_price"));
System.out.println("====================================================");
}
}