4.solrj对索引的增删改查

来源:互联网 发布:结构分析软件 编辑:程序博客网 时间:2024/05/21 19:25

1.使用solrj版本为5.2.1

2.索引对象POJO

package com.szss.test.solrj;import org.apache.solr.client.solrj.beans.Field;import java.io.Serializable;import java.util.Date;public class Product implements Serializable {    @Field("id")    private String id;    @Field("product_full_name")    private String productFullName;    @Field("date_created")    private Date dateCreated;    @Field("last_updated")    private Date lastUpdated;    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getProductFullName() {        return productFullName;    }    public void setProductFullName(String productFullName) {        this.productFullName = productFullName;    }    public Date getDateCreated() {        return dateCreated;    }    public void setDateCreated(Date dateCreated) {        this.dateCreated = dateCreated;    }    public Date getLastUpdated() {        return lastUpdated;    }    public void setLastUpdated(Date lastUpdated) {        this.lastUpdated = lastUpdated;    }}

3.单元测试

package com.szss.test.solrj;import org.apache.solr.client.solrj.SolrClient;import org.apache.solr.client.solrj.SolrQuery;import org.apache.solr.client.solrj.SolrServerException;import org.apache.solr.client.solrj.impl.HttpSolrClient;import org.apache.solr.client.solrj.response.FacetField;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.params.ModifiableSolrParams;import org.junit.Before;import org.junit.Test;import java.io.IOException;import java.util.Iterator;import java.util.List;public class SolrTest {    private SolrClient client;//    @Before//    public void init(){//      client = new CloudSolrClient("192.168.7.1:2181,192.168.7.2:2181,192.168.7.3:2181");//      client.setDefaultCollection("solr");//    }    @Before    public void init() {        String urlString = "http://localhost:8989/solr/test";        client = new HttpSolrClient(urlString);    }    /**     * 全量索引     */    @Test    public void fullImport() {        ModifiableSolrParams params = new ModifiableSolrParams();        params.set("qt", "/dataimport");        params.set("command", "full-import");        QueryResponse response = null;        try {            response = client.query(params);        } catch (Exception e1) {            e1.printStackTrace();        }        System.out.println(response);    }    /**     * 增量索引     */    @Test    public void deltaImport() {        ModifiableSolrParams params = new ModifiableSolrParams();        params.set("qt", "/dataimport");        params.set("command", "delta-import");        QueryResponse response = null;        try {            response = client.query(params);        } catch (Exception e1) {            e1.printStackTrace();        }        System.out.println(response);    }    /**     * 查询     * @throws SolrServerException     * @throws IOException     */    @Test    public void solrQuery() throws SolrServerException, IOException {        SolrQuery solrQuery = new SolrQuery();        solrQuery.setQuery("product_full_name:笔记本");        solrQuery.setStart(0);        solrQuery.setRows(10);//可以用于分页        solrQuery.addSort("product_full_name", SolrQuery.ORDER.asc);        QueryResponse response = client.query(solrQuery);        SolrDocumentList list = response.getResults();        for (Iterator iterator = list.iterator(); iterator.hasNext(); ) {            SolrDocument product = (SolrDocument) iterator.next();            System.out.println(product.get("product_full_name"));        }    }    /**     * 查询结果封装为实体     * @throws SolrServerException     * @throws IOException     */    @Test    public void solrQueryBean() throws SolrServerException, IOException {        SolrQuery solrQuery = new SolrQuery();        solrQuery.setQuery("product_full_name:笔记本");        solrQuery.setStart(0);        solrQuery.setRows(10);//可以用于分页        solrQuery.addSort("product_full_name", SolrQuery.ORDER.asc);        QueryResponse response = client.query(solrQuery);        List<Product> list = response.getBeans(Product.class);        for (Iterator iterator = list.iterator(); iterator.hasNext(); ) {            Product product = (Product) iterator.next();            System.out.println(product.getProductFullName());        }    }     /**     * 匹配结果的数量     * @throws SolrServerException     * @throws IOException     */    @Test    public void queryFacet() throws SolrServerException, IOException {        SolrQuery solrQuery = new SolrQuery();        solrQuery.setQuery("product_full_name:‘笔记本’");        solrQuery.setFacet(true);        solrQuery.addFacetField("product_full_name");        QueryResponse queryResponse = client.query(solrQuery);        List<FacetField> facetFields = queryResponse.getFacetFields();        for (FacetField field : facetFields) {            System.out.println(field.getName());            List<FacetField.Count> counts = field.getValues();            for (FacetField.Count count : counts) {                System.out.println(count.getName() + " : " + count.getCount());            }        }    }}
0 0
原创粉丝点击