zoukankan      html  css  js  c++  java
  • solr的增删改查

    solr的配置请查看:http://www.cnblogs.com/byteworld/p/5898651.html

    创建Core:(可以复制模版到solrhome estconf文件夹中)

    简化了(schema.xml配置文件)

    <?xml version="1.0" encoding="UTF-8" ?>
    <schema name="test_solr" version="1.5"> 
        <!--版本这个也需要加-->
        <field name="_version_" type="long" indexed="true" stored="true"/>
        <field name="_root_" type="string" indexed="true" stored="false"/>
    	<field name="id" type="string" stored="true" indexed="true"/>
    	<field name="name" type="string" stored="true" indexed="true" omitNorms="false"/>
    	<field name="price" type="string" stored="true" indexed="true"/>  
    	<fieldType name="string" class="solr.StrField" sortMissingLast="true" />
    	<!-- 这个主键必须加不然报错 -->
    	<uniqueKey>id</uniqueKey>
        <!-- boolean type: "true" or "false" -->
        <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>   
        <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
        <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
        <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
        <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
    </schema>
    

     java代码:

    jar包下载:链接: http://pan.baidu.com/s/1kUIRWRt 密码: xvtu

    package demo;
    
    import java.io.IOException;
    import java.util.ArrayList;
    
    import org.apache.solr.client.solrj.SolrServerException;
    import org.apache.solr.client.solrj.impl.HttpSolrClient;
    import org.apache.solr.client.solrj.impl.HttpSolrServer;
    import org.apache.solr.common.SolrInputDocument;
    
    /**
     * @Description:solr添加
     * @author byte-zbs 
     * @date 2016年12月19日 下午2:28:33
     */
    public class AddDemo
    {
        public static final String SOLR_URL = "http://localhost:8090/solr/test_solr";
        public static void main(String[] args)
        {
            addDoc();
        }
        
        public static void addDoc()
        {
            String[] words = {"Document是Solr索引(动词,indexing)和搜索的最基本单元","它类似于关系数据库表中的一条记录","可以包含一个或多个字段(Field","每个字段包含一个name和文本值","字段在被索引的同时可以存储在索引中","搜索时就能返回该字段的值"};
            
            long start = System.currentTimeMillis();
            ArrayList<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
            for(int i = 0;i < 300; i++)
            {
                SolrInputDocument input = new SolrInputDocument();
                
                input.addField("id", "id"+i,1.0f);
                input.addField("name",words[i % 21], 1.0f);
                input.addField("price",10*i);
                docs.add(input);
            }
            @SuppressWarnings("resource")
            HttpSolrClient client = new HttpSolrClient(SOLR_URL);
            try
            {
                client.add(docs.iterator());
            }
            catch (SolrServerException e)
            {
                e.printStackTrace();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            System.out.println(System.currentTimeMillis() - start);
        }
    }
    

      

    /**
         * @Description:查询
         * @param   
         * @return void 返回类型
         */
        public static void query()
        {
            HttpSolrClient client = new HttpSolrClient(SOLR_URL);
            client.setMaxRetries(1);
            client.setConnectionTimeout(60*1000);
            client.setSoTimeout(60*1000);
            client.setDefaultMaxConnectionsPerHost(100);
            client.setMaxTotalConnections(1000);
            client.setFollowRedirects(false);
            client.setAllowCompression(true);
            client.setRequestWriter(new BinaryRequestWriter());
            SolrQuery query = new SolrQuery();
            query.setQuery("id:id*");
            query.setFields("name","id","price");
            query.setSort("price", ORDER.asc);
            query.setStart(0);
            query.setRows(20);
            try
            {
                QueryResponse res = client.query(query);
                SolrDocumentList DocumentList = res.getResults();
                for (SolrDocument document:DocumentList)
                {
                    String value = document.getFieldValue("id").toString();
                    String price = document.getFieldValue("price").toString();
                    System.out.println(value + "====" +price);
                }
                
                
                
            }
            catch (SolrServerException e)
            {
                e.printStackTrace();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
        }
        /**
         * @Description:集合插入对象
         * @param   
         * @return void 返回类型
         */
        public static void pojoDocAll()
        {
            Goods good1 = new Goods("pojo_commit1", "苹果", 12.0);
            Goods good2 = new Goods("pojo_commit2", "橘子", 12.0);
            Goods good3 = new Goods("pojo_commit3", "香蕉", 12.0);
            ArrayList<Goods> list = new ArrayList<Goods>();
            list.add(good1);
            list.add(good2);
            list.add(good3);
            HttpSolrClient client = new HttpSolrClient(SOLR_URL);
            try
            {
                client.addBeans(list);
                client.commit();
            }
            catch (SolrServerException e)
            {
                e.printStackTrace();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
        }
        
        /**
         * @Description:插入对象
         * @param   
         * @return void 返回类型
         */
        public static void pojoDoc()
        {
            Goods good = new Goods("pojo_commit", "苹果", 12.0);
            HttpSolrClient Client = new HttpSolrClient(SOLR_URL);
            Client.setRequestWriter(new RequestWriter());
            try
            {
                Client.addBean(good);
                //Client.optimize();
                Client.commit();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            catch (SolrServerException e)
            {
                e.printStackTrace();
            }
        }
        
        
        
        
        
        /**
         * @Description:删除文档
         * @param   
         * @return void 返回类型
         */
        public static void delDoc()
        {
            HttpSolrClient client = new HttpSolrClient(SOLR_URL);
            try
            {
                client.deleteById("id_update");
                client.commit();
            }
            catch (SolrServerException e)
            {
                e.printStackTrace();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            
        }
        
        
        
        
        /**
         * @Description:添加的第一种方式
         * @param   
         * @return void 返回类型
         */
        public static void addone()
        {
            SolrInputDocument doc = new SolrInputDocument();
            doc.addField("id", "id_double");
            doc.addField("name", "呵呵呵呵");
            doc.addField("price", 100.0);
            HttpSolrClient client = new HttpSolrClient(SOLR_URL);
            try
            {
                client.add(doc);
                client.commit();
            }
            catch (SolrServerException e)
            {
                e.printStackTrace();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            
            
        }
        
        /**
         * @Description:添加第二种方式
         * @param   
         * @return void 返回类型
         */
        public static void addoneOther()
        {
            SolrInputDocument doc = new SolrInputDocument();
            doc.addField("id", "id_update");
            doc.addField("name", "来个测试");
            doc.addField("price", 100.0);
            
            UpdateRequest request = new UpdateRequest();
            
            request.setAction(ACTION.COMMIT,false, false);
            request.add(doc);
            HttpSolrClient client = new HttpSolrClient(SOLR_URL);
            
            
            try
            {
                UpdateResponse resp = request.process(client);
                System.out.println(resp);
            }
            catch (SolrServerException e)
            {
                e.printStackTrace();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            
            
        }
    package demo.dao;
    import org.apache.solr.client.solrj.beans.Field;
    
    public class Goods
    {
        @Field
        private String id;
        @Field(value = "name")
        private String goodsname;
        @Field
        private double price;
        public Goods(String id, String name, double price)
        {
            super();
            this.id = id;
            this.goodsname = name;
            this.price = price;
        }
        public String getId()
        {
            return id;
        }
        public void setId(String id)
        {
            this.id = id;
        }
        public String getName()
        {
            return goodsname;
        }
        public void setName(String name)
        {
            this.goodsname = name;
        }
        public double getPrice()
        {
            return price;
        }
        public void setPrice(double price)
        {
            this.price = price;
        }
        
    }

    项目完整:链接: http://pan.baidu.com/s/1pLq9Kdt 密码: f558

     

  • 相关阅读:
    HTML5 中的Nav元素详解
    Gevent中信号量的使用
    MemCache缓存multiget hole详解
    MemCache中的内存管理详解
    Php中的强制转换详解
    Python中类的特殊方法详解
    MemCache的LRU删除机制详解
    AngularJS事件绑定的使用详解
    Php数据类型之整型详解
    HTML基础知识
  • 原文地址:https://www.cnblogs.com/byteworld/p/6198426.html
Copyright © 2011-2022 走看看