.net中運用solr提升搜索效率(入門)


概述:

在開發網站的時候經常有要對某些內容查詢的需求。此時如果基於數據庫查詢來做搜索功能,由於要對多個字段做模糊匹配,效率往往非常糟糕。這種情況就可以用Solr來提升搜索的效率。Solr是一個獨立的企業級搜索應用服務器,它對外提供類似於Web-service的API接口。這里介紹下Solr的環境和配置,然后說下應用SolrNet客戶端對Solr服務器的操作。

 

一、Solr安裝

軟件下載:Solr 5.0JDK 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創建。

 

配置SolrSchema.xml:

一般情況下只要配置Schema文件就可以使用solrSchema文件是用來描述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的應用有個總體的概念。


免責聲明!

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



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