概述:
在開發網站的時候經常有要對某些內容查詢的需求。此時如果基於數據庫查詢來做搜索功能,由於要對多個字段做模糊匹配,效率往往非常糟糕。這種情況就可以用Solr來提升搜索的效率。Solr是一個獨立的企業級搜索應用服務器,它對外提供類似於Web-service的API接口。這里介紹下Solr的環境和配置,然后說下應用SolrNet客戶端對Solr服務器的操作。
一、Solr安裝
軟件下載:Solr 5.0、JDK 7以上
安裝jdk.。Solr直接解壓完,用命令行直接可以啟動。
命令行中進入server文件夾,使用如下命令啟動solr服務:
在瀏覽器中輸入如下地址:http://localhost:8983/solr/ 。能打開如下頁面說明solr服務已正常啟動。
Solr是基於java開發的所以需要jdk環境。下載的Solr的包里自帶有jetty Web服務器。這里就是使用自帶的。
二、Solr配置
新建core:
在上面打開的web界面操作即可。點擊Core Admin菜單進入Core管理界面。
點擊<Add Core>按鈕新建一個core,如圖提示需要配置文件。
所以我們到\solr-5.0.0\server\solr的路徑下新建一個名稱為“test”的文件夾。再到solr-5.0.0\server\solr\configsets\basic_configs文件夾下,把Conf文件夾復制到剛才新建的test文件夾下。這樣就把需要的配置文件提供了,等下再介紹配置文件的配置。
再點擊Add Core按鈕完成Core創建。
配置Solr的Schema.xml:
一般情況下只要配置Schema文件就可以使用solr。Schema文件是用來描述Solrs索引的數據結構的。
fieldType:描述solr支持的數據類型
uniqueKey:標記solr的主鍵字段
field:標記solr的索引的字段
dynamicField:支持通配符的索引字段,在field中找不到的就會來匹配該字段
一般情況下要添加field節點,field和你要查詢的字段對應。如圖添加了title字段。
然后在uniqueKey設置主鍵。如圖把id字段設置為主鍵。
三、SolrNet構建索引
下載solrnet。
建議下載地址:http://download.csdn.net/download/tp4479/4666325。下載以后自己編譯。雖然從Nuget也可以下載到,但是這個版本好像有bug。
使用solr構建索引:
以下代碼是向solr服務器添加一個索引數據。批量添加索引類似。
1 Startup.Init<SolrDocument>("http://localhost:8983/solr/test"); 2 var solr = ServiceLocator.Current.GetInstance<ISolrOperations<SolrDocument>>(); 3 var doc = new SolrDocument() { Id="key1",Title="tt1"}; 4 solr.Add(doc); 5 solr.Commit();
四、SolrNet查詢
使用solr查詢數據:
1 var solr = ServiceLocator.Current.GetInstance<ISolrOperations<SolrDocument>>(); 2 QueryOptions options = new QueryOptions(); 3 options.Rows = 10;//結果獲取個數 4 options.Start = 0;//取結果的開始位置 ,用於分頁 5 IList<ISolrQuery> qlist = new List<ISolrQuery>(); 6 var qfied = new SolrQueryByField("Title","tt1"); 7 var qkey = new SolrQueryByField("Id", "key1"); 8 qlist.Add(qfied); 9 qlist.Add(qkey); 10 var qs = new SolrMultipleCriteriaQuery(qlist, "or");//查詢條件間的關系 11 var res2 = solr.Query(qs,options);
模糊查詢:用通配符實現
var res1 = solr.Query(new SolrQuery("Title:*a1*"), options);
總結
到這里就簡要的介紹了用.net客戶端SolrNet操作Solr的過程。希望能讓沒接觸過的朋友對solr的應用有個總體的概念。