在開(kāi)發(fā)網(wǎng)站的時(shí)候經(jīng)常有要對(duì)某些內(nèi)容查詢的需求。此時(shí)如果基于數(shù)據(jù)庫(kù)查詢來(lái)做搜索功能,由于要對(duì)多個(gè)字段做模糊匹配,效率往往非常糟糕。這種情況就可以用Solr來(lái)提升搜索的效率。Solr是一個(gè)獨(dú)立的企業(yè)級(jí)搜索應(yīng)用服務(wù)器,它對(duì)外提供類似于Web-service的API接口。這里介紹下Solr的環(huán)境和配置,然后說(shuō)下應(yīng)用SolrNet客戶端對(duì)Solr服務(wù)器的操作。
軟件下載:Solr5.0、JDK7以上
安裝jdk.。Solr直接解壓完,用命令行直接可以啟動(dòng)。
命令行中進(jìn)入server文件夾,使用如下命令啟動(dòng)solr服務(wù):

在瀏覽器中輸入如下地址:http://localhost:8983/solr/。能打開(kāi)如下頁(yè)面說(shuō)明solr服務(wù)已正常啟動(dòng)。

Solr是基于java開(kāi)發(fā)的所以需要jdk環(huán)境。下載的Solr的包里自帶有jettyWeb服務(wù)器。這里就是使用自帶的。
新建core:
在上面打開(kāi)的web界面操作即可。點(diǎn)擊CoreAdmin菜單進(jìn)入Core管理界面。

點(diǎn)擊<Add Core>按鈕新建一個(gè)core,如圖提示需要配置文件。

所以我們到/solr-5.0.0/server/solr的路徑下新建一個(gè)名稱為“test”的文件夾。再到solr-5.0.0/server/solr/configsets/basic_configs文件夾下,把Conf文件夾復(fù)制到剛才新建的test文件夾下。這樣就把需要的配置文件提供了,等下再介紹配置文件的配置。

再點(diǎn)擊AddCore按鈕完成Core創(chuàng)建。
配置Solr的Schema.xml:
一般情況下只要配置Schema文件就可以使用solr。Schema文件是用來(lái)描述Solrs索引的數(shù)據(jù)結(jié)構(gòu)的。
fieldType:描述solr支持的數(shù)據(jù)類型
uniqueKey:標(biāo)記solr的主鍵字段
field:標(biāo)記solr的索引的字段
dynamicField:支持通配符的索引字段,在field中找不到的就會(huì)來(lái)匹配該字段
一般情況下要添加field節(jié)點(diǎn),field和你要查詢的字段對(duì)應(yīng)。如圖添加了title字段。

然后在uniqueKey設(shè)置主鍵。如圖把id字段設(shè)置為主鍵。

下載solrnet。
建議下載地址:http://download.csdn.net/download/tp4479/4666325。下載以后自己編譯。雖然從Nuget也可以下載到,但是這個(gè)版本好像有bug。
使用solr構(gòu)建索引:
以下代碼是向solr服務(wù)器添加一個(gè)索引數(shù)據(jù)。批量添加索引類似。
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();使用solr查詢數(shù)據(jù):
1 var solr = ServiceLocator.Current.GetInstance<ISolrOperations<SolrDocument>>(); 2 QueryOptions options = new QueryOptions(); 3 options.Rows = 10;//結(jié)果獲取個(gè)數(shù) 4 options.Start = 0;//取結(jié)果的開(kāi)始位置 ,用于分頁(yè) 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 SolrMult模糊查詢:用通配符實(shí)現(xiàn)
varres1=solr.Query(newSolrQuery("Title:*a1*"),options);
總結(jié)
到這里就簡(jiǎn)要的介紹了用.net客戶端SolrNet操作Solr的過(guò)程。希望能讓沒(méi)接觸過(guò)的朋友對(duì)solr的應(yīng)用有個(gè)總體的概念。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注