查詢索引的方法有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進行了索引創建。
畢竟不同人需求是不一樣的。自己選擇合適的方式是重要的。也許方式選錯了,得反復重新做。這就比較煩了。
一個新東西,從不懂到懂也是一個過程。