这是我在使用solr单机版服务器进行查询
服务器操作截图
java测试代码片段:
(添加索引文档)
public void testSoloJ() throws Exception{
//得到SolrServer 通过HttpSolrServer
SolrServer solrServer = new HttpSolrServer("http://10.117.17.110:8080/solr/collection1");
//创建一个SolrDocument
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "test3");
document.addField("item_title", "手机贴膜");
document.addField("item_sell_point", "送钢化膜");
//添加到服务器
solrServer.add(document);
//提交
solrServer.commit();
}
(删除索引文档)
public void testDeleteDocumentById() throws Exception{
//创建solrserver对象
SolrServer server = new HttpSolrServer("http://10.117.17.110:8080/solr/collection1");
//通过id删除document
server.deleteById("test1");
//提交
server.commit();
}
@Test
public void testDeleteDocumentByQuery() throws Exception{
//创建solrserver对象
SolrServer server = new HttpSolrServer("http://10.117.17.110:8080/solr/collection1");
//通过条件删除
server.deleteByQuery("*:*");
//提交
server.commit();
}
(查询索引文档高亮显示)
public void testQuery() throws Exception{
// 1. 创建solrserver对象
SolrServer solrServer = new HttpSolrServer("http://10.117.17.110:8080/solr/collection1");
// 2. 创建solrQuery对象
SolrQuery query = new SolrQuery();
// 3. 设置查询条件
query.setQuery("手机");
// 4. 设置默认查询字段
query.set("df", "item_keywords");
// 5. 设置分页条件
query.setStart(0);
query.setRows(10);
// 6. 设置高亮显示
query.setHighlight(true);
query.addHighlightField("item_title");
query.setHighlightSimplePre("<div>");
query.setHighlightSimplePost("</div");
// 7. 执行查询,返回查询结果
QueryResponse queryResponse = solrServer.query(query);
// 8. 得到结果集
SolrDocumentList solrDocumentList = queryResponse.getResults();
// 9. 得到结果总记录数
long numFound = solrDocumentList.getNumFound();
System.out.println("总共查询到"+numFound+"条记录");
// 10. 显示查询结果
for (SolrDocument solrDocument : solrDocumentList) {
System.out.println("id: "+solrDocument.getFieldValue("id"));
// 11. 高亮显示标题
Map<String, Map<String, List<String>>> highlighting = queryResponse.getHighlighting();
List<String> list = highlighting.get(solrDocument.getFieldValue("id")).get("item_title");
// 12. 如果list不为空则标题中有查询的内容,否则在其他地方有查询的内容
String title = "";
if( list!=null && list.size()>0){
title = list.get(0);
} else {
title = (String) solrDocument.getFieldValue("item_title");
}
System.out.println("item_title: " + title);
System.out.println("item_sell_point: "+solrDocument.getFieldValue("item_sell_point"));
System.out.println("item_price: "+solrDocument.getFieldValue("item_price"));
System.out.println("item_image: "+solrDocument.getFieldValue("item_image"));
System.out.println("item_category_name: "+solrDocument.getFieldValue("item_category_name"));
System.out.println("分割线===================================");
}
}