Lucene.Net實現(xiàn)搜索結(jié)果分類統(tǒng)計功能(中小型網(wǎng)站)
最近我們搜易站內(nèi)搜索系統(tǒng)的一個客戶需要一個無限級分類和分類統(tǒng)計功能,要實現(xiàn)的效果如下:

但由于搜易站內(nèi)搜索系統(tǒng)是基于Lucene.net 2.0開發(fā)的,并沒有內(nèi)置的分類統(tǒng)計搜索功能,于是乎只能自己實現(xiàn)了,考慮到客戶的總數(shù)據(jù)量和搜索量不是特別大,于是用了簡單有效的方式來實現(xiàn):
因為涉及到分類的操作,但是每個站點的分類體系還是有些不一樣的,本文主要提供思路和部分演示代碼,給有需要的童鞋參考:
思路:
首先想到Lucene搜索出來的結(jié)果是一個Hits對象,Hits其實就是一個搜索結(jié)果文檔的集合對象,那么遍歷這個集合對象,跟給定的分類字段比對,存在就+1 。
代碼示例:
Lucene.Net.Search.Hits hits = Searcher.Search(querystring) ;
int hcount = hits.Length();
Lucene.Net.Documents.Document doc = null;
for (int i = 0; i < hcount; i++)
{
doc = hits.Doc(i);
string c1 = doc.GetField("Cate1").StringValue();
//判斷是否存在于給定的分類集合中,存在則加1
if (parameter.Cate1Groups.ContainsKey(c1))
{
parameter.Cate1Groups[c1] = parameter.Cate1Groups[c1] + 1;
}
else
{
parameter.Cate1Groups.Add(c1, 1);
}
}
適用場景:
這種實現(xiàn)方式比較適合中小型網(wǎng)站,在數(shù)據(jù)量和搜索量不大的情況下可用。
以上所述是小編給大家介紹的Lucene.Net實現(xiàn)搜索結(jié)果分類統(tǒng)計功能(中小型網(wǎng)站),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
如何在ASP.Net Core使用分布式緩存的實現(xiàn)
這篇文章主要介紹了如何在ASP.Net Core使用分布式緩存的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-02-02
如何使用ASP.NET MiniAPI 調(diào)試未匹配請求路徑
ASP.NET MiniAPI是一個輕量級的Web API框架,它可以讓我們快速地構(gòu)建和部署RESTful服務,本文給大家介紹使用ASP.NET MiniAPI 調(diào)試未匹配請求路徑的方法,感興趣的朋友一起看看吧2024-01-01
asp.net在事件中啟動線程來打開一個頁面的實現(xiàn)方法
點擊一個按鈕做兩件事情,一件需要點擊按鈕馬上完成,另一件事情是點擊按鈕后做其他事情,不會的朋友一起來看看下面是如何實現(xiàn)的2014-11-11
使用 Salt + Hash 將密碼加密后再存儲進數(shù)據(jù)庫
如果你需要保存密碼(比如網(wǎng)站用戶的密碼),你要考慮如何保護這些密碼數(shù)據(jù),象下面那樣直接將密碼寫入數(shù)據(jù)庫中是極不安全的,因為任何可以打開數(shù)據(jù)庫的人,都將可以直接看到這些密碼2012-12-12
.Net Core WebApi部署在Linux服務器上的方法
這篇文章主要介紹了.Net Core WebApi部署在Linux服務器上的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03
asp.net調(diào)用系統(tǒng)設置字體文本框的方法
這篇文章主要介紹了asp.net調(diào)用系統(tǒng)設置字體文本框的方法,包括設置文本字體樣式和大小,需要的朋友可以參考下2014-09-09

