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)站),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
ASP.NET?Core中的Ocelot網(wǎng)關(guān)介紹
這篇文章介紹了ASP.NET?Core中的Ocelot網(wǎng)關(guān),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04使用源鏈接對ASP.NET Core源代碼進行調(diào)試
這篇文章介紹了使用源鏈接對ASP.NET Core源代碼進行調(diào)試的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-02-02Visual Studio Debug實戰(zhàn)教程之?dāng)帱c操作
眾所周知斷點對于Visual Studio調(diào)試過程是十分重要的,斷點的設(shè)置也是為了更好的進行調(diào)試。下面這篇文章主要給大家介紹了關(guān)于Visual Studio Debug實戰(zhàn)教程之?dāng)帱c操作的相關(guān)資料,需要的朋友可以參考下2018-09-09AjaxControlToolKit 顯示瀏覽者本地語言的方法
使用最新版的AjaxControlToolKit控件2008-12-12.NET實現(xiàn)XML與DataTable互轉(zhuǎn)的實例代碼
.NET實現(xiàn)XML與DataTable互轉(zhuǎn)的實例代碼,需要的朋友可以參考一下2013-03-03C#中efcore-ShardingCore呈現(xiàn)“完美”分表
本文簡單的介紹了efcore的分表,著重介紹了efcore下最完美的分表組件ShardingCore,可以幫助大家更好的學(xué)習(xí),感興趣的小伙伴可以參考一下2021-08-08