最近我們搜易站內搜索系統的一個客戶需要一個無限級分類和分類統計功能,要實現的效果如下:
但由于搜易站內搜索系統是基于Lucene.net 2.0開發的,并沒有內置的分類統計搜索功能,于是乎只能自己實現了,考慮到客戶的總數據量和搜索量不是特別大,于是用了簡單有效的方式來實現:
因為涉及到分類的操作,但是每個站點的分類體系還是有些不一樣的,本文主要提供思路和部分演示代碼,給有需要的童鞋參考:
思路:
首先想到Lucene搜索出來的結果是一個Hits對象,Hits其實就是一個搜索結果文檔的集合對象,那么遍歷這個集合對象,跟給定的分類字段比對,存在就+1 。
代碼示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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); } } |
適用場景:
這種實現方式比較適合中小型網站,在數據量和搜索量不大的情況下可用。
以上所述是小編給大家介紹的Lucene.Net實現搜索結果分類統計功能(中小型網站),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!
原文鏈接:http://www.cnblogs.com/kwklover/archive/2017/03/03/6494701.html