solr sort 多個字段


查詢索引的方法有2種:

           一.通過solr搜索引擎自己已經實現的功能來查詢。即發送url請求到solr服務器。solr會通過這個url請求,返回相應的響應。

                

                 solr有個管理界面,url:http://localhost:12002/solr/

                 在有數據的情況下,可以在這里做各種查詢,在這里查詢的時候,就會向solr服務器發送各種請求。默認為 * :*即查詢所有索引

 

                一般向solr服務器發送請求的url:

               http://localhost:12002/solr/db/select/?q=searchIndex%3A*&version=2.2&start=0&rows=10&indent=on    這種形式

            (solr層分頁)

            1.start=0&rows=10這2個參數是用來分頁用的。

            (查詢索引字段)

             2.searchIndex%3A*是查詢條件表示searchIndex=*     %3A是=的urf-8編碼。

           (發送請求的編碼)

             3.在向solr發送請求時,必須將中文字符等特殊字符,變成utf-8編碼。否則查詢不到東西。

            (多排序字段)

             4.&sort=索引字段名稱1+desc,索引字段名稱2+desc,索引字段名稱3+desc       多個字段用 “," 分隔

             (分組操作。和數據庫的 group by 差不多)

             5.&facet=true&facet.field=索引字段名稱

 

 

以上這些solr參數對應於lucene的方法。畢竟solr是lucene進行的封裝。

1. (solr排序對應於lucene排序)

 sort = new Sort(new SortField[]{new SortField("isNew",SortField.INT,true),new SortField("createDate",SortField.STRING,true),new SortField("price",SortField.FLOAT,true)});

 

2.(solr多字段查詢對應lucene多字段查詢)

            String[] fields={"searchIndex"};
            String[] querys={searchIndex};
            Occur[] Occurs={BooleanClause.Occur.MUST};
            Query query = IKQueryParser.parseMultiField(fields, querys, Occurs); 

3.(solr的邏輯操作相當於lucene的多條件組合時的邏輯組合)

    OR    AND對應於lucene的Occur

    Occur[] Occurs={BooleanClause.Occur.MUST};


4.facet這是solr獨有的,lucene沒有,不過可以自己構造,但是比較復雜,建議直接使用solr的,人家既然實現了,就用唄。

 

 

二。自己通過solrj進行編程發送請求,和solr的一樣,向服務器發送請求。

        這種方式應該說更自由。我做的項目只對建立索引時是通過solrj進行了索引創建。

        畢竟不同人需求是不一樣的。自己選擇合適的方式是重要的。也許方式選錯了,得反復重新做。這就比較煩了。

        一個新東西,從不懂到懂也是一個過程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM