三、SolrJ的添加 删除 查询
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)); } } }