Solr使用

import static org.junit.Assert.*;

import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.SpellCheckResponse;
import org.apache.solr.client.solrj.response.SpellCheckResponse.Suggestion;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Test;

public class SolrTest {
    String baseURL = "http://192.168.30.111:8983/solr/collection1";// http://ip:port/solr/collection1
    HttpSolrServer httpSolrServer = new HttpSolrServer(baseURL);

    /**
     * 查询
     * 
     * @throws Exception
     */
    @Test
    public void test1() throws Exception {
        // 注意:如果baseURL后面没有指定solrcore,那么默认查询collection1,如果想查询其他core,则需要在后面增加core的名称

        SolrQuery params = new SolrQuery();
        // params.set("q","*:*");
        params.setQuery("*:*");

        params.setRows(10);
        QueryResponse response = httpSolrServer.query(params);
        SolrDocumentList results = response.getResults();
        long numFound = results.getNumFound();
        System.out.println("found:" + numFound);
        int size = results.size();
        System.out.println("size:" + size);
        int num = 0;
        for (SolrDocument solrDocument : results) {
            Set<String> keySet = solrDocument.keySet();
            num++;
            for (String key : keySet) {
                System.out.println("num----" + num + "----key-->" + key
                        + "---------value-->" + solrDocument.get(key));
            }
            System.err.println("========================");
        }
    }

    /**
     * 建立索引
     * 
     * @throws Exception
     */
    @Test
    public void test2() throws Exception {
        SolrInputDocument docs = new SolrInputDocument();
        docs.addField("id", 234);
        docs.addField("name", "soros");
//        docs.addField("last_modified", new Date());
        httpSolrServer.add(docs);
//        httpSolrServer.commit();

    }

    /**
     * 建立索引2
     * 
     * @throws Exception
     */
    @Test
    public void test3() throws Exception {
        User user = new User();
        user.setId(111);
        user.setName("cat");
        user.setCity("shenzhen");
        httpSolrServer.addBean(user);
//        httpSolrServer.commit();
        httpSolrServer.commit(true,false,true);
//        httpSolrServer.optimize(waitFlush, waitSearcher, maxSegments)
    }

    /**
     * 删除
     * 
     * @throws Exception
     */
    @Test
    public void test4() throws Exception {
        httpSolrServer.deleteById("10");
        httpSolrServer.deleteByQuery("text:Maxtor");
        httpSolrServer.commit();
    }

    @Test
    public void test5() throws Exception {
        SolrQuery params = new SolrQuery();
        params.set("qt", "/spell");
        params.setQuery("name:sausung");
        QueryResponse response = httpSolrServer.query(params);
        long numFound = response.getResults().getNumFound();

        if (numFound == 0) {
            System.out.println("拼写错误");
            SpellCheckResponse spellCheckResponse = response.getSpellCheckResponse();
            List<Suggestion> suggestions = spellCheckResponse.getSuggestions();
            for (Suggestion suggestion : suggestions) {
                int numFound2 = suggestion.getNumFound();
                System.out.println("推荐搜索关键字数:"+numFound2+"~~~~~~~");
                List<String> alternatives = suggestion.getAlternatives();
                for (String value : alternatives) {
                    System.out.println("建议值为"+value+"~~~~~~~~~");
                }
            
            }
            
        } else {
            System.out.println("正确查询");
        }
    }
}
import org.apache.solr.client.solrj.beans.Field;

public class User {
    @Field
    private Integer id;
    @Field
    private String name;

    private String city;

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}
原文地址:https://www.cnblogs.com/cxzdy/p/5126091.html