在文件里配置下面信息:
其中:
导入
查询
public List<Foo> search(String keywords, Integer page,Integer rows)throwsException {
SolrQuery solrQuery = new SolrQuery(); //构造搜索条件
solrQuery.setQuery("title:" + keywords); //搜索关键词
// 设置分页 start=0就是从0开始,,rows=5当前返回5条记录,第二页就是变化start这个值为5就可以了。
solrQuery.setStart((Math.max(page, 1) - 1) * rows);
solrQuery.setRows(rows);
//是否需要高亮
booleanisHighlighting = !StringUtils.equals("*", keywords) &&StringUtils.isNotEmpty(keywords);
if (isHighlighting) {
// 设置高亮
solrQuery.setHighlight(true); // 开启高亮组件
solrQuery.addHighlightField("title");// 高亮字段
solrQuery.setHighlightSimplePre("<em>");// 标记,高亮关键字前缀
solrQuery.setHighlightSimplePost("</em>");// 后缀
}
// 执行查询
QueryResponse queryResponse = this.httpSolrServer.query(solrQuery);
List<Foo> foos = queryResponse.getBeans(Foo.class);
if (isHighlighting) {
// 将高亮的标题数据写回到数据对象中
Map<String, Map<String,List<String>>> map = queryResponse.getHighlighting();
for (Map.Entry<String, Map<String,List<String>>> highlighting : map.entrySet()){
for (Foo foo : foos) {
if (!highlighting.getKey().equals(foo.getId().toString())) {
continue;
}
foo.setTitle(StringUtils.join(highlighting.getValue().get("title"),""));
break;
}
}
}
returnfoos;
}
--------------------------------------------------------------
例子:
@Test
publicvoid addDocument() throws Exception {
//创建一连接
SolrServer solrServer = new HttpSolrServer("http://192.168.81.100:8080/solr");
//创建一个文档对象
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "test001");
document.addField("item_title", "测试商品2");
document.addField("item_price", 54321);
//把文档对象写入索引库
solrServer.add(document);
//提交
solrServer.commit();
}
@Test
publicvoid deleteDocument() throws Exception {
//创建一连接
SolrServer solrServer = new HttpSolrServer("http://192.168.81.100:8080/solr");
//solrServer.deleteById("test001");
solrServer.deleteByQuery("*:*");
solrServer.commit();
}
@Test
publicvoid queryDocument() throws Exception {
SolrServer solrServer = new HttpSolrServer("http://192.168.81.100:8080/solr");
//创建一个查询对象
SolrQuery query = new SolrQuery();
//设置查询条件
query.setQuery("*:*");
query.setStart(20);
query.setRows(50);
//执行查询
QueryResponse response = solrServer.query(query);
//取查询结果
SolrDocumentList solrDocumentList = response.getResults();
System.out.println("共查询到记录:" + solrDocumentList.getNumFound());
for (SolrDocument solrDocument : solrDocumentList) {
System.out.println(solrDocument.get("id"));
System.out.println(solrDocument.get("item_title"));
System.out.println(solrDocument.get("item_price"));
System.out.println(solrDocument.get("item_image"));
}
}
2.假如通过实体来操作solr的插数和查询,那么那个实体必须要有field的注解