• 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;
        }
    
    }
  • 相关阅读:
    项目笔记三
    ASP.NET小收集<9>:HTML解析
    TSQL数据维护:更改表所有者
    [转贴]SQL2005:数据类型最大值
    TSQL存储过程:ROW_NUMBER()分页
    JS收集<7>:浏览器event兼容
    统计SQLServer2005表记录数
    ASP.NET小收集<8>:JS创建对象
    JS收集<8>:HTML控件的坐标
    MySql按指定天数进行分组数据统计分析 1
  • 原文地址:https://www.cnblogs.com/cxzdy/p/5126091.html
Copyright © 2020-2023  润新知