Lucene.Net實(shí)現(xiàn)搜索結(jié)果分類統(tǒng)計(jì)功能(中小型網(wǎng)站)
最近我們搜易站內(nèi)搜索系統(tǒng)的一個(gè)客戶需要一個(gè)無(wú)限級(jí)分類和分類統(tǒng)計(jì)功能,要實(shí)現(xiàn)的效果如下:
但由于搜易站內(nèi)搜索系統(tǒng)是基于Lucene.net 2.0開(kāi)發(fā)的,并沒(méi)有內(nèi)置的分類統(tǒng)計(jì)搜索功能,于是乎只能自己實(shí)現(xiàn)了,考慮到客戶的總數(shù)據(jù)量和搜索量不是特別大,于是用了簡(jiǎn)單有效的方式來(lái)實(shí)現(xiàn):
因?yàn)樯婕暗椒诸惖牟僮?,但是每個(gè)站點(diǎn)的分類體系還是有些不一樣的,本文主要提供思路和部分演示代碼,給有需要的童鞋參考:
思路:
首先想到Lucene搜索出來(lái)的結(jié)果是一個(gè)Hits對(duì)象,Hits其實(shí)就是一個(gè)搜索結(jié)果文檔的集合對(duì)象,那么遍歷這個(gè)集合對(duì)象,跟給定的分類字段比對(duì),存在就+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); } }
適用場(chǎng)景:
這種實(shí)現(xiàn)方式比較適合中小型網(wǎng)站,在數(shù)據(jù)量和搜索量不大的情況下可用。
以上所述是小編給大家介紹的Lucene.Net實(shí)現(xiàn)搜索結(jié)果分類統(tǒng)計(jì)功能(中小型網(wǎng)站),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
ASP.NET?Core中的Ocelot網(wǎng)關(guān)介紹
這篇文章介紹了ASP.NET?Core中的Ocelot網(wǎng)關(guān),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04使用源鏈接對(duì)ASP.NET Core源代碼進(jìn)行調(diào)試
這篇文章介紹了使用源鏈接對(duì)ASP.NET Core源代碼進(jìn)行調(diào)試的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-02-02Visual Studio Debug實(shí)戰(zhàn)教程之?dāng)帱c(diǎn)操作
眾所周知斷點(diǎn)對(duì)于Visual Studio調(diào)試過(guò)程是十分重要的,斷點(diǎn)的設(shè)置也是為了更好的進(jìn)行調(diào)試。下面這篇文章主要給大家介紹了關(guān)于Visual Studio Debug實(shí)戰(zhàn)教程之?dāng)帱c(diǎn)操作的相關(guān)資料,需要的朋友可以參考下2018-09-09AjaxControlToolKit 顯示瀏覽者本地語(yǔ)言的方法
使用最新版的AjaxControlToolKit控件2008-12-12.NET實(shí)現(xiàn)XML與DataTable互轉(zhuǎn)的實(shí)例代碼
.NET實(shí)現(xiàn)XML與DataTable互轉(zhuǎn)的實(shí)例代碼,需要的朋友可以參考一下2013-03-03asp.net下生成99個(gè)不同的隨機(jī)數(shù)
asp.net下生成99個(gè)不同的隨機(jī)數(shù)...2007-04-04C#中efcore-ShardingCore呈現(xiàn)“完美”分表
本文簡(jiǎn)單的介紹了efcore的分表,著重介紹了efcore下最完美的分表組件ShardingCore,可以幫助大家更好的學(xué)習(xí),感興趣的小伙伴可以參考一下2021-08-08