package com.itheima.solrj;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.SolrQuery.ORDER;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.params.SolrParams;
import org.junit.Test;
/**
* SolrJ管理
* 添加
* 删除
* 修改
* 查询
* @author mjl
*
*/
public class SolrJManager {
//添加
@Test
public void testAdd() throws SolrServerException, IOException{
String baseURL = "http://localhost:8080/solr/";
//单机版
SolrServer solrServer = new HttpSolrServer(baseURL);
SolrInputDocument doc = new SolrInputDocument();
doc.setField("id", "haha");
doc.setField("name", "范冰冰");
//添加
solrServer.add(doc);
solrServer.commit();
}
//删除
@Test
public void testDelete() throws SolrServerException, IOException{
//删除全部
String baseURL = "http://localhost:8080/solr/";
//单机版
SolrServer solrServer = new HttpSolrServer(baseURL);
//删除全部
solrServer.deleteByQuery("*:*", 1000);
}
//更新
@Test
public void testUpdate(){
String baseURL = "http://localhost:8080/solr/";
//单机版
SolrServer solrServer = new HttpSolrServer(baseURL);
//与添加一致,只要ID相同就是更新,不同就是添加
}
//查询
@Test
public void testSearch() throws SolrServerException{
String baseURL = "http://localhost:8080/solr/";
//单机版
SolrServer solrServer = new HttpSolrServer(baseURL);
//查询
//关键词:台灯
//过滤条件:"product_catagory_name":"幽默杂货"
//价格区间:"product_price":18.0
//价格排序
//开始行 每页数
//高亮 默认域 只查询指定域
SolrQuery solrQuery = new SolrQuery();
//设置关键词
// solrQuery.set("q", "product_name:台灯");
solrQuery.setQuery("product_name:台灯");
//设置过滤条件
solrQuery.set("fq","product_catalog_name:幽默杂货");
solrQuery.set("fq","product_price:[* TO 10]");
//价格排序
solrQuery.addSort("product_price", ORDER.desc);
//分页
solrQuery.setStart(0);
solrQuery.setRows(5);
//默认域 指定域 高亮
solrQuery.set("df", "product_name");
solrQuery.set("fl", "id,product_name");
//高亮
solrQuery.setHighlight(true);
//指定高亮的字段
solrQuery.addHighlightField("product_name");
//前缀
solrQuery.setHighlightSimplePre("<span style='color:red'>");
//后缀
solrQuery.setHighlightSimplePost("</span>");
//执行查询
QueryResponse response = solrServer.query(solrQuery);
//文档结果集
SolrDocumentList docs = response.getResults();
Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
//Map K id V Map
//Map K 域名 V List
//List list.get(0)
//总条数
long numFound = docs.getNumFound();
System.out.println(numFound);
for (SolrDocument doc : docs) {
System.out.println(doc.get("id"));
System.out.println(doc.get("product_picture"));
System.out.println(doc.get("product_name"));
System.out.println("------");
Map<String, List<String>> map = highlighting.get(doc.get("id"));
List<String> list = map.get("product_name");
System.out.println(list.get(0));
}
}
}