中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

solr在使用solrj操作中的各個(gè)操作大全(在solrcores中測(cè)試)

2018-07-20    來(lái)源:open-open

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用
    package com.fjsh.SearchJobsFirst;  
      
    import java.text.SimpleDateFormat;  
    import java.util.Calendar;  
    import java.util.Date;  
    import java.util.GregorianCalendar;  
    import java.util.HashMap;  
    import java.util.Iterator;  
    import java.util.LinkedHashMap;  
    import java.util.List;  
    import java.util.Map;  
    import java.util.Map.Entry;  
      
    import javax.swing.RepaintManager;  
    import javax.swing.text.html.parser.Entity;  
      
    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.impl.HttpSolrServer;  
    import org.apache.solr.client.solrj.response.FacetField;  
    import org.apache.solr.client.solrj.response.FacetField.Count;  
    import org.apache.solr.client.solrj.response.Group;  
    import org.apache.solr.client.solrj.response.GroupCommand;  
    import org.apache.solr.client.solrj.response.GroupResponse;  
    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.GroupParams;  
    import org.apache.solr.common.params.ModifiableSolrParams;  

[java] view plaincopy

    /** 
     * @Project JobsOtherWebSearch 
     * @Package com.fjsh.SearchJobsFirst 
     * @ClassName: SearchJobs  
     * @Author fjsh 
     * @Description: 對(duì)solr中的各個(gè)功能進(jìn)行測(cè)試 
     * @Date 2014-3-5 下午3:38:09  
     */  
      
    public class SearchJobs {  
        private static String url = "jdbc:sqlserver://192.168.2.106:1433;DatabaseName=JobsOtherweb51jobDB";  
        private static String user = "sa";  
        private static String password = "sa";  
        private String Corenum;  
        public static int JobsId = 219443;// start jobsid  
        public SolrServer solrServer = null;// new  
                                            // HttpSolrServer("http://192.168.2.100:8080/solr/JobsOtherWeb1");  
      
        // 1、 創(chuàng)建solrserver對(duì)象:  
        public SolrServer createSolrServer() {  
            HttpSolrServer solr = null;  
            try {  
                solr = new HttpSolrServer(  
                        "http://192.168.2.106:8080/solr/JobsOtherWeb0");  
                solr.setConnectionTimeout(100);  
                solr.setDefaultMaxConnectionsPerHost(100);  
                solr.setMaxTotalConnections(100);  
            } catch (Exception e) {  
                System.out.println("請(qǐng)檢查tomcat服務(wù)器或端口是否開(kāi)啟!");  
                e.printStackTrace();  
            }  
            return solr;  
        }  
      
        // 簡(jiǎn)單的查詢,取出二十個(gè)  
        public void querytop20() {  
            solrServer = createSolrServer();  
            System.out.println("簡(jiǎn)單查詢?nèi)〕銮岸畟(gè)");  
            String dtStart = new SimpleDateFormat("yyyyMMddHHmmssSSS")  
                    .format(new Date());  
            System.out.println("開(kāi)始時(shí)間:" + dtStart + "\n");  
            try {  
                SolrQuery query = new SolrQuery();// 查詢  
                query.setQuery("jobsName:計(jì)算機(jī)");  
                query.setRows(20);  
                SolrDocumentList docs = solrServer.query(query).getResults();  
                for (SolrDocument sd : docs) {  
                    System.out.println(sd.getFieldValue("jobsName"));  
                    System.out.println(sd.getFieldValue("publishDate"));  
                }  
                solrServer.shutdown();  
                String dtEnd = new SimpleDateFormat("yyyyMMddHHmmssSSS")  
                        .format(new Date());  
                System.out.println(query);  
            } catch (SolrServerException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
        }  
      
        // 刪除索引  
        // 據(jù)查詢結(jié)果刪除:  
        public void DeleteByQuery() {  
            solrServer = createSolrServer();  
            try {  
                // 刪除所有的索引  
                solrServer.deleteByQuery("jobsName:高級(jí)技術(shù)支持");  
                solrServer.commit();  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
        }  
      
        // 根據(jù)索引號(hào)刪除索引:  
        public void DeleteByQueryJobsId() {  
            solrServer = createSolrServer();  
            try {  
                solrServer.deleteById("515792");  
                solrServer.commit();  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
        }  
      
        // 查詢  
        // SolrJ提供的查詢功能比較強(qiáng)大,可以進(jìn)行結(jié)果中查詢、范圍查詢、排序等。  
        // 補(bǔ)充一下范圍查詢的格式:[star t TO end],start與end是相應(yīng)數(shù)據(jù)格式的值的字符串形式,“TO” 一定要保持大寫!  
        /* 
         * field 查詢的字段名稱數(shù)組 key 查詢的字段名稱對(duì)應(yīng)的值 start 查詢的起始位置 count 一次查詢出來(lái)的數(shù)量 sortfield 
         * 需要排序的字段數(shù)組 flag 需要排序的字段的排序方式如果為true 升序 如果為false 降序 hightlight 是否需要高亮顯示 
         */  
        public QueryResponse Search(String[] field, String[] key, int start,  
                int count, String[] sortfield, Boolean[] flag, Boolean hightlight) {  
            solrServer = createSolrServer();  
            // 檢測(cè)輸入是否合法  
            if (null == field || null == key || field.length != key.length) {  
                return null;  
            }  
            if (null == sortfield || null == flag  
                    || sortfield.length != flag.length) {  
                return null;  
            }  
      
            SolrQuery query = null;  
            try {  
                // 初始化查詢對(duì)象  
                query = new SolrQuery(field[0] + ":" + key[0]);  
                for (int i = 0; i < field.length; i++) { query.addFilterQuery(field[i] + ":" + key[i]); } // 設(shè)置起始位置與返回結(jié)果數(shù) query.setStart(start); query.setRows(count); // 設(shè)置排序 for (int i = 0; i < sortfield.length; i++) { if (flag[i]) { query.addSortField(sortfield[i], SolrQuery.ORDER.asc); } else { query.addSortField(sortfield[i], SolrQuery.ORDER.desc); } } // 設(shè)置高亮 if (null != hightlight) { query.setHighlight(true); // 開(kāi)啟高亮組件 query.addHighlightField("jobsName");// 高亮字段 query.setHighlightSimplePre("");// 標(biāo)記  
                    query.setHighlightSimplePost("");  
                    query.setHighlightSnippets(1);// 結(jié)果分片數(shù),默認(rèn)為1  
                    query.setHighlightFragsize(1000);// 每個(gè)分片的最大長(zhǎng)度,默認(rèn)為100  
      
                }  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
      
            QueryResponse rsp = null;  
            try {  
                rsp = solrServer.query(query);  
            } catch (Exception e) {  
                e.printStackTrace();  
                return null;  
            }  
            // 返回查詢結(jié)果  
            return rsp;  
        }  
      
        // Facet的一個(gè)應(yīng)用:自動(dòng)補(bǔ)全  
        // prefix為前綴,min為最大返回結(jié)果數(shù)  
        // field需要查詢并返回不全的字段,prefix需要查詢并返回的字段不全值  
      
        public String[] autoComplete(String field, String prefix, int min) {  
            /*------------第一處標(biāo)記------------------------*/  
            solrServer = createSolrServer();  
            String words[] = null;  
            StringBuffer sb = new StringBuffer("");  
            SolrQuery query = new SolrQuery(field + ":" + prefix);  
            QueryResponse rsp = new QueryResponse();  
            // Facet為solr中的層次分類查詢  
            /*------------第二處標(biāo)記:程序從第一處標(biāo)記執(zhí)行到這里需要300ms所以將上面的代碼進(jìn)行實(shí)例化最好------------------------*/  
            try {  
                query.setFacet(true);  
                // query.setQuery("*:*");  
                query = new SolrQuery(field + ":" + prefix);  
                query.setFacetPrefix(prefix);  
                query.addFacetField(field);  
                rsp = solrServer.query(query);  
                /*------------第三處標(biāo)記:程序從第二處標(biāo)記執(zhí)行到這里需要200ms但此處很難再進(jìn)行優(yōu)化,由于查詢的復(fù)雜性------------------------*/  
            } catch (Exception e) {  
                // TODO: handle exception  
                e.printStackTrace();  
                return null;  
            }  
            if (null != rsp) {  
                FacetField ff = rsp.getFacetField(field);  
                ListcountList = ff.getValues();  
                if (null == countList) {  
                    return null;  
                }  
                for (int i = 0; i < countList.size(); i++) { String tmp[] = countList.get(i).toString().split(" "); // 排除單個(gè)字 if (tmp[0].length() < 2) { continue; } sb.append(tmp[0] + " "); min--; if (min == 0) { break; } } words = sb.toString().split(" "); } else { return null; } return words; } /** * @Author fjsh * @Title SearchGroup * @Description 按group進(jìn)行查找 * @param QUERY_CONTENT 查詢內(nèi)容 * @param QUERY_ROWS 查找的數(shù)量,默認(rèn)是10 * @param GROUP true or false 是否按group查詢 * @param GROUP_FIELD 查詢field * @param GROUP_LIMIT The number of results (documents) to return for each group. Defaults to 1 * @Return void * @Throws * @Date 2014-5-7 * 輸出結(jié)果的時(shí)候,由于定義的數(shù)據(jù)索引沒(méi)有做很好是調(diào)整,顯示的結(jié)果并不理想,不過(guò)此方法可以作為參考 */ public void SearchGroup(String QUERY_CONTENT,int QUERY_ROWS, Boolean GROUP, String GROUP_FIELD,String GROUP_LIMIT) { SolrServer server = createSolrServer(); SolrQuery param = new SolrQuery(); param.setQuery("jobsName:"+QUERY_CONTENT); param.setRows(QUERY_ROWS); param.setParam(GroupParams.GROUP, GROUP); param.setParam(GroupParams.GROUP_FIELD, GROUP_FIELD); param.setParam(GroupParams.GROUP_LIMIT, GROUP_LIMIT); QueryResponse response = null; try { response = server.query(param); } catch (SolrServerException e) { // logger.error(e.getMessage(), e); } Map info = new HashMap();    
             GroupResponse groupResponse = response.getGroupResponse();    
             if(groupResponse != null) {    
                 ListgroupList = groupResponse.getValues();    
                 for(GroupCommand groupCommand : groupList) {    
                     Listgroups = groupCommand.getValues();    
                     for(Group group : groups) {    
                         info.put(group.getGroupValue(), (int)group.getResult().getNumFound());   
                         System.out.println(group.getGroupValue()+"---"+group.getResult().getNumFound());  
                     }    
                 }    
             }    
        }  
      
        /* 
         * 介紹了一下facet之后,來(lái)說(shuō)說(shuō)怎么實(shí)現(xiàn)facet。facet的實(shí)現(xiàn)其實(shí)很簡(jiǎn)單,主要在搜索參數(shù)上帶上就OK。 
         *  
         * facet=on/true #代表開(kāi)啟facet facet.field=cate #代表要統(tǒng)計(jì)的面(分組),比如上面的分類,品牌,可以多次出現(xiàn) 
         * facet.limit =20 #每個(gè)分組最多返回條數(shù) facet.mincount = 1 #這個(gè)表示分組下某一條目的最小數(shù)據(jù)量 
         * facet.missing = on/true #統(tǒng)計(jì)null的值 facet.method = #默認(rèn)為fc, fc表示Field Cache 
         * 比如 
         * :http://localhost/product/select/?q=鐵觀音&facet=on&facet.field=category&facet 
         * .field=brand&facet.mincount=1在搜索結(jié)果中返回xml的facet結(jié)果 
         *  
         *  
         * view sourceprint? 0102  0304  05640648* 071208609 1101112 74131614 131510164* 17418319 2202211* 2212312425*分組名64* 分組內(nèi)條目,name表示條目,64是統(tǒng)計(jì)結(jié)果數(shù)。 
         *  
         *  
         *  
         *  
         * Date Facet 日期類型的字段在文檔中很常見(jiàn) , 如商品上市時(shí)間 , 貨物出倉(cāng)時(shí)間 , 書籍上架時(shí)間等等 . 某些情況下需要針對(duì)這些字段進(jìn)行 
         * Facet. 不過(guò)時(shí)間字段的取值有無(wú)限性 , 用戶往往關(guān)心的不是某個(gè)時(shí)間點(diǎn)而是某個(gè)時(shí)間段內(nèi)的查詢統(tǒng)計(jì)結(jié)果 . Solr 
         * 為日期字段提供了更為方便的查詢統(tǒng)計(jì)方式 . 當(dāng)然 , 字段的類型必須是 DateField( 或其子類型 ). 需要注意的是 , 使用 Date 
         * Facet 時(shí) , 字段名 , 起始時(shí)間 , 結(jié)束時(shí)間 , 時(shí)間間隔這 4 個(gè)參數(shù)都必須提供 . 與 Field Facet 類似 ,Date 
         * Facet 也可以對(duì)多個(gè)字段進(jìn)行 Facet. 并且針對(duì)每個(gè)字段都可以單獨(dú)設(shè)置參數(shù) . 2.1 facet.date 該參數(shù)表示需要進(jìn)行 Date 
         * Facet 的字段名 , 與 facet.field 一樣 , 該參數(shù)可以被設(shè)置多次 , 表示對(duì)多個(gè)字段進(jìn)行 Date Facet. 2.2 
         * facet.date.start 起始時(shí)間 , 時(shí)間的一般格式為 ” 1995-12-31T23:59:59Z”, 另外可以使用 
         * ”NOW”,”YEAR”,”MONTH” 等等 , 具體格式可以參考 org.apache.solr.schema. DateField 的 
         * java doc. 2.3 facet.date.end 結(jié)束時(shí)間 . 2.4 facet.date.gap 時(shí)間間隔 . 如果 start 為 
         * 2009-1-1,end 為 2010-1-1.gap 設(shè)置為 ”+1MONTH” 表示間隔 1 個(gè)月 , 那么將會(huì)把這段時(shí)間劃分為 12 
         * 個(gè)間隔段 . 注意 ”+” 因?yàn)槭翘厥庾址詰?yīng)該用 ”%2B” 代替 . 2.5 facet.date.hardend 取值可以為 
         * true|false, 默認(rèn)為 false. 它表示 gap 迭代到 end 處采用何種處理 . 舉例說(shuō)明 start 為 
         * 2009-1-1,end 為 2009-12-25,gap 為 ”+1MONTH”,hardend 為 false 的話最后一個(gè)時(shí)間段為 
         * 2009-12-1 至 2010-1-1;hardend 為 true 的話最后一個(gè)時(shí)間段為 2009-12-1 至 2009-12-25. 
         * 2.6 facet.date.other 取值范圍為 before|after|between|none|all, 默認(rèn)為 none. 
         * before 會(huì)對(duì) start 之前的值做統(tǒng)計(jì) . after 會(huì)對(duì) end 之后的值做統(tǒng)計(jì) . between 會(huì)對(duì) start 至 end 
         * 之間所有值做統(tǒng)計(jì) . 如果 hardend 為 true 的話 , 那么該值就是各個(gè)時(shí)間段統(tǒng)計(jì)值的和 . none 表示該項(xiàng)禁用 . all 表示 
         * before,after,all 都會(huì)統(tǒng)計(jì) . 舉例 : &facet=on &facet.date=date 
         * &facet.date.start=2009-1-1T0:0:0Z &facet.date.end=2010-1-1T0:0:0Z 
         * &facet.date.gap=%2B1MONTH &facet.date.other=all 
         */  
        public void FacetFieldQuery() throws Exception {  
            solrServer = createSolrServer();  
            SolrQuery query = new SolrQuery();// 建立一個(gè)新的查詢  
            query.setQuery("jobsName:計(jì)算機(jī)維護(hù)");  
            query.setFacet(true);// 設(shè)置facet=on  
            // 分類信息分為:薪水,發(fā)布時(shí)間,教育背景,工作經(jīng)驗(yàn),公司類型,工作類型  
            query.addFacetField(new String[] { "salary", "publishDate",  
                    "educateBackground", "jobExperience", "companytype", "jobsType" });// 設(shè)置需要facet的字段  
            query.setFacetLimit(10);// 限制facet返回的數(shù)量  
            query.setFacetMissing(false);// 不統(tǒng)計(jì)null的值  
            query.setFacetMinCount(1);// 設(shè)置返回的數(shù)據(jù)中每個(gè)分組的數(shù)據(jù)最小值,比如設(shè)置為1,則統(tǒng)計(jì)數(shù)量最小為1,不然不顯示  
      
            // query.addFacetQuery("publishDate:[2014-04-11T00:00:00Z TO 2014-04-13T00:00:00Z]");  
            QueryResponse response = solrServer.query(query);  
            System.out.println("查詢時(shí)間:" + response.getQTime());  
            Listfacets = response.getFacetFields();// 返回的facet列表  
            for (FacetField facet : facets) {  
                System.out.println(facet.getName());  
                System.out.println("----------------");  
                Listcounts = facet.getValues();  
                for (Count count : counts) {  
                    System.out.println(count.getName() + ":" + count.getCount());  
                }  
                System.out.println();  
            }  
      
        }  
      
        // 時(shí)間片使用方法  
        public void FacetFieldQueryDate() throws Exception {  
            solrServer = createSolrServer();  
            SolrQuery query = new SolrQuery();// 建立一個(gè)新的查詢  
            query.setQuery("jobsName:計(jì)算");  
            query.setFacet(true);// 設(shè)置facet=on  
            query.setFacetLimit(10);// 限制facet返回的數(shù)量  
            query.setFacetMissing(false);// 不統(tǒng)計(jì)null的值  
            query.setFacetMinCount(1);// 設(shè)置返回的數(shù)據(jù)中每個(gè)分組的數(shù)據(jù)最小值,比如設(shè)置為1,則統(tǒng)計(jì)數(shù)量最小為1,不然不顯示  
            query.addFacetField(new String[] { "salary", "educateBackground",  
                    "jobExperience", "companytype", "jobsType" });// 設(shè)置需要facet的字段  
            // query.addFacetQuery("publishDate:[2014-04-21T00:00:00Z TO 2014-04-23T00:00:00Z]");  
            // query.addFacetQuery("publishDate:[2014-04-11T00:00:00Z TO 2014-04-13T00:00:00Z]");  
            SimpleDateFormat time0 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
            SimpleDateFormat time1 = new SimpleDateFormat("yyyy-MM-dd");  
            SimpleDateFormat time2 = new SimpleDateFormat("HH:mm:ss");  
            // return  
            // date.getYear()+"-"+date.getMonth()+"-"+date.getDay()+"T"+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();  
      
            Calendar c = Calendar.getInstance();  
            c.setTime(time0.parse(time1.format(c.getTime()) + " 23:59:59"));  
            Date date = c.getTime();  
            String dateNow = time1.format(date) + "T" + time2.format(date) + "Z";  
            c.setTime(time0.parse(time1.format(c.getTime()) + " 23:59:59"));  
            c.add(Calendar.DATE, -1);  
            date = c.getTime();  
            // 當(dāng)天  
            query.addFacetQuery("publishDate:[" + time1.format(date) + "T"  
                    + time2.format(date) + "Z" + " TO " + dateNow + "]");  
            c.add(Calendar.DATE, -2);  
            date = c.getTime();  
            // 前三天  
            query.addFacetQuery("publishDate:[" + time1.format(date) + "T"  
                    + time2.format(date) + "Z" + " TO " + dateNow + "]");  
            c.add(Calendar.DATE, -4);  
            date = c.getTime();  
            // 前一周  
            query.addFacetQuery("publishDate:[" + time1.format(date) + "T"  
                    + time2.format(date) + "Z" + " TO " + dateNow + "]");  
            c.add(Calendar.DATE, -7);  
            date = c.getTime();  
            // 前兩周  
            query.addFacetQuery("publishDate:[" + time1.format(date) + "T"  
                    + time2.format(date) + "Z" + " TO " + dateNow + "]");  
            c.add(Calendar.DATE, -16);  
            date = c.getTime();  
            // 前一個(gè)月  
            query.addFacetQuery("publishDate:[" + time1.format(date) + "T"  
                    + time2.format(date) + "Z" + " TO " + dateNow + "]");  
            c.add(Calendar.DATE, -30);  
            date = c.getTime();  
            // 前兩個(gè)月  
            query.addFacetQuery("publishDate:[" + time1.format(date) + "T"  
                    + time2.format(date) + "Z" + " TO " + dateNow + "]");  
      
            QueryResponse response = solrServer.query(query);  
            System.out.println("查詢時(shí)間:" + response.getQTime());  
            Listfacets = response.getFacetFields();// 返回的facet列表  
            for (FacetField facet : facets) {  
                System.out.println(facet.getName());  
                System.out.println("----------------");  
                Listcounts = facet.getValues();  
                for (Count count : counts) {  
                    System.out.println(count.getName() + ":" + count.getCount());  
                }  
                System.out.println();  
            }  
            // 根據(jù)時(shí)間段來(lái)獲取數(shù)據(jù)  
            Map maps = response.getFacetQuery();  
            for (Entry entry : maps.entrySet()) {  
                System.out.println(entry.getKey() + ":" + entry.getValue());  
            }  
      
        }  
      
        // 最終使用的查詢方式  
        // SolrJ提供的查詢功能比較強(qiáng)大,可以進(jìn)行結(jié)果中查詢、范圍查詢、排序等。  
        // 補(bǔ)充一下范圍查詢的格式:[star t TO end],start與end是相應(yīng)數(shù)據(jù)格式的值的字符串形式,“TO” 一定要保持大寫!  
        /* 
         * field 查詢的字段名稱數(shù)組 key 查詢的字段名稱對(duì)應(yīng)的值 start 查詢的起始位置 count 一次查詢出來(lái)的數(shù)量 sortfield 
         * 需要排序的字段數(shù)組 flag 需要排序的字段的排序方式如果為true 升序 如果為false 降序 hightlight 是否需要高亮顯示 
         */  
        public QueryResponse searchResult(String[] field, String[] key, int start,  
                int count, String[] sortfield, Boolean[] flag, Boolean hightlight)  
                throws Exception {  
            solrServer = createSolrServer();  
            // 檢測(cè)輸入是否合法  
            if (null == field || null == key || field.length != key.length) {  
                return null;  
            }  
              
      
            SolrQuery query = null;  
            try {  
                // 初始化查詢對(duì)象  
                query = new SolrQuery(field[0] + ":" + key[0]);  
                for (int i = 0; i < field.length; i++) { query.addFilterQuery(field[i] + ":" + key[i]); } // 設(shè)置起始位置與返回結(jié)果數(shù) query.setStart(start); query.setRows(count); // 設(shè)置排序 if (!(null == sortfield || null == flag || sortfield.length != flag.length)) { for (int i = 0; i < sortfield.length; i++) { if (flag[i]) { query.addSortField(sortfield[i], SolrQuery.ORDER.asc); } else { query.addSortField(sortfield[i], SolrQuery.ORDER.desc); } } } // 設(shè)置高亮 if (null != hightlight) { query.setHighlight(true); // 開(kāi)啟高亮組件 query.addHighlightField("jobsName");// 高亮字段 query.setHighlightSimplePre("");// 標(biāo)記  
                    query.setHighlightSimplePost("");  
                    query.setHighlightSnippets(1);// 結(jié)果分片數(shù),默認(rèn)為1  
                    query.setHighlightFragsize(1000);// 每個(gè)分片的最大長(zhǎng)度,默認(rèn)為100  
      
                }  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
            query.setFacet(true);// 設(shè)置facet=on  
            query.setFacetLimit(10);// 限制facet返回的數(shù)量  
            query.setFacetMissing(false);// 不統(tǒng)計(jì)null的值  
            query.setFacetMinCount(1);// 設(shè)置返回的數(shù)據(jù)中每個(gè)分組的數(shù)據(jù)最小值,比如設(shè)置為1,則統(tǒng)計(jì)數(shù)量最小為1,不然不顯示  
            query.addFacetField(new String[] { "salary", "educateBackground",  
                    "jobExperience", "companytype", "jobsType" });// 設(shè)置需要facet的字段  
            // query.addFacetQuery("publishDate:[2014-04-21T00:00:00Z TO 2014-04-23T00:00:00Z]");  
            // query.addFacetQuery("publishDate:[2014-04-11T00:00:00Z TO 2014-04-13T00:00:00Z]");  
            SimpleDateFormat time0 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
            SimpleDateFormat time1 = new SimpleDateFormat("yyyy-MM-dd");  
            SimpleDateFormat time2 = new SimpleDateFormat("HH:mm:ss");  
            // return  
            // date.getYear()+"-"+date.getMonth()+"-"+date.getDay()+"T"+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();  
      
            Calendar c = Calendar.getInstance();  
            c.setTime(time0.parse(time1.format(c.getTime()) + " 23:59:59"));  
            Date date = c.getTime();  
            String dateNow = time1.format(date) + "T" + time2.format(date) + "Z";  
            c.setTime(time0.parse(time1.format(c.getTime()) + " 23:59:59"));  
            c.add(Calendar.DATE, -1);  
            date = c.getTime();  
            // 當(dāng)天  
            query.addFacetQuery("publishDate:[" + time1.format(date) + "T"  
                    + time2.format(date) + "Z" + " TO " + dateNow + "]");  
            c.add(Calendar.DATE, -2);  
            date = c.getTime();  
            // 前三天  
            query.addFacetQuery("publishDate:[" + time1.format(date) + "T"  
                    + time2.format(date) + "Z" + " TO " + dateNow + "]");  
            c.add(Calendar.DATE, -4);  
            date = c.getTime();  
            // 前一周  
            query.addFacetQuery("publishDate:[" + time1.format(date) + "T"  
                    + time2.format(date) + "Z" + " TO " + dateNow + "]");  
            c.add(Calendar.DATE, -7);  
            date = c.getTime();  
            // 前兩周  
            query.addFacetQuery("publishDate:[" + time1.format(date) + "T"  
                    + time2.format(date) + "Z" + " TO " + dateNow + "]");  
            c.add(Calendar.DATE, -16);  
            date = c.getTime();  
            // 前一個(gè)月  
            query.addFacetQuery("publishDate:[" + time1.format(date) + "T"  
                    + time2.format(date) + "Z" + " TO " + dateNow + "]");  
            c.add(Calendar.DATE, -30);  
            date = c.getTime();  
            // 前兩個(gè)月  
            query.addFacetQuery("publishDate:[" + time1.format(date) + "T"  
                    + time2.format(date) + "Z" + " TO " + dateNow + "]");  
      
            QueryResponse rsp = null;  
            try {  
                rsp = solrServer.query(query);  
                System.out.println("此次查詢時(shí)間qtime :" + rsp.getQTime());  
                Listfacets = rsp.getFacetFields();// 返回的facet列表  
                for (FacetField facet : facets) {  
                    System.out.println(facet.getName());  
                    System.out.println("----------------");  
                    Listcounts = facet.getValues();  
                    for (Count countitem : counts) {  
                        System.out.println(countitem.getName() + ":"  
                                + countitem.getCount());  
                    }  
                    System.out.println();  
                }  
                // 根據(jù)時(shí)間段來(lái)獲取數(shù)據(jù)  
                Map maps = rsp.getFacetQuery();  
                for (Entry entry : maps.entrySet()) {  
                    System.out.println(entry.getKey() + ":" + entry.getValue());  
                }  
                // 獲取返回的結(jié)果  
                SolrDocumentList docs = rsp.getResults();             
                for (SolrDocument doc : docs) {  
                    System.out.println("-----");  
                    System.out.println(doc.getFieldValue("jobsName"));  
                    System.out.println(doc.getFieldValue("publishDate"));  
      
                }  
            } catch (Exception e) {  
                e.printStackTrace();  
                return null;  
            }  
            // 返回查詢結(jié)果  
            return rsp;  
        }  
    }  

來(lái)自: http://blog.csdn.net/a925907195?viewmode=contents

標(biāo)簽: 代碼 服務(wù)器 搜索

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:python解析網(wǎng)頁(yè)的字符編碼

下一篇:連接 MySQL 數(shù)據(jù)庫(kù)PHP代碼