Raymond
Java筆記
導航
BlogJava
首頁
新隨筆
聯系
聚合
管理
<
2006年2月
>
日
一
二
三
四
五
六
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
統計
隨筆 - 21
文章 - 2
評論 - 6
引用 - 0
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(1)
給我留言
查看公開留言
查看私人留言
隨筆分類
Java(9)
(rss)
JavaScript
(rss)
Software Engineering
(rss)
技術雜談(1)
(rss)
網頁技術(1)
(rss)
隨筆檔案
2006年3月 (2)
2006年2月 (4)
2006年1月 (8)
2005年12月 (7)
文章分類
Java(2)
(rss)
JavaScript
(rss)
技術漫談
(rss)
軟件過程
(rss)
文章檔案
2006年3月 (2)
Java
Java視線論壇
(rss)
技術漫談
itpub.net
曾登高
數據庫
網頁技術(HTML/JavaScript/CSS)
軟件過程
搜索
最新評論
1.?re: 使用TPTP和eclipse進行Profiling(剖析)-簡介
我支持你,整理過的東西就是自己的東西。
--fenixshadow
2.?re: 使用TPTP和eclipse進行Profiling(剖析)-簡介
怎么總是復制過來復制過去!沒一點自己的意見嗎
--靠
3.?re: DOM的Document對象轉換到String的中文編碼(亂碼)問題
謝謝你,你的文章幫助了我:)
--AA
4.?re: [導入]網頁模塊拖放
還可以啊~~
--a文學網—相思無語
5.?re: 實現隊列的JavaScript對象
日,為什么不能放首頁,我覺得不錯
--williamxs
閱讀排行榜
1.?使用TPTP和eclipse進行Profiling(剖析)-簡介(5643)
2.?DOM的Document對象轉換到String的中文編碼(亂碼)問題(3914)
3.?在lucene實現按關鍵字出現次數排序的列表(1747)
4.?使用JMeter進行壓力測試(1581)
5.?ANT 的javax.xml.parsers.FactoryConfigurationError 錯誤解決辦法(1571)
評論排行榜
1.?使用TPTP和eclipse進行Profiling(剖析)-簡介(2)
2.?實現隊列的JavaScript對象(2)
3.?DOM的Document對象轉換到String的中文編碼(亂碼)問題(1)
4.?[導入]網頁模塊拖放(1)
5.?使用Struts(0)
在lucene實現按關鍵字出現次數排序的列表
需求: 在lucene索引中建立了很多關鍵字的索引,想獲得一個當前用戶的關鍵字列表,并且每個關鍵字還帶有使用了多少次的信息。
解決方法:
使用自定義的HitCollector對象,代碼如下
import
java.io.IOException;
import
java.util.ArrayList;
import
java.util.Collections;
import
java.util.HashMap;
import
java.util.Iterator;
import
java.util.Set;
import
org.apache.lucene.document.Document;
import
org.apache.lucene.search.HitCollector;
import
org.apache.lucene.search.IndexSearcher;
public
class
TagCollector
extends
HitCollector
{
private
IndexSearcher searcher;
private
HashMap
<
String,Integer
>
tagList
=
new
HashMap
<
String,Integer
>
();
public
TagCollector(IndexSearcher searcher)
{
this
.searcher
=
searcher;
}
@Override
public
void
collect(
int
docID,
float
score)
{
try
{
Document doc
=
searcher.doc(docID);
String[] tagValues
=
doc.getValues(
"
tag
"
);
if
(tagValues
!=
null
)
{
for
(
int
i
=
0
;i
<
tagValues.length;i
++
)
{
addTagCount(tagValues[i]);
}
}
}
catch
(IOException e)
{
e.printStackTrace();
}
}
private
void
addTagCount(String tagName)
{
int
count
=
1
;
if
(tagList.containsKey(tagName))
{
count
=
(Integer)tagList.get(tagName)
+
1
;
}
tagList.put(tagName,count);
}
public
HashMap
<
String,Integer
>
getTagList()
{
return
tagList;
}
@SuppressWarnings(
"
unchecked
"
)
public
ArrayList
<
TagSummary
>
getSortedTagList(
boolean
ascending)
{
ArrayList
<
TagSummary
>
list
=
new
ArrayList
<
TagSummary
>
();
Iterator keyIterator
=
tagList.keySet().iterator();
while
(keyIterator.hasNext())
{
String key
=
(String)keyIterator.next();
int
value
=
tagList.get(key);
list.add(
new
TagSummary(key,value));
}
Collections.sort(list);
if
(
!
ascending)
{
Collections.reverse(list);
}
return
list;
}
}
功能說明: 每個搜索到的hits,都會調用這個方法的collect方法,因此可以在這個對象當中放一個HashMap,累計記錄每個關鍵字得到的次數。
排序部分用另外的一個TagSummary類來獲得,這里就不詳細給出了。
問題: 這是一個直觀的方法,但是相信頻繁調用這樣的方法會造成服務器的嚴重負擔。可以考慮一下用緩存的方法,在沒有關鍵字未曾發生改變之前,只在第一次調用這樣的方法,之后把結果緩存在數據表或者內存當中。有更新的時候,通過版本號對比以決定是否需要更新。
posted on 2006-02-04 14:26
Raymond的Java筆記
閱讀(1747)
評論(0)
編輯
收藏
所屬分類:
Java
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
不同方法遍歷列表的時間效率
使用JMeter進行壓力測試
使用TPTP和eclipse進行Profiling(剖析)-簡介
Volatile Fields
在lucene實現按關鍵字出現次數排序的列表
Resin + Struts 的中文亂碼問題解決
Java判定字符是否中文
實現隊列的JavaScript對象
Resin 編譯的奇怪問題解決
Powered by:
BlogJava
Copyright © Raymond的Java筆記
主站蜘蛛池模板:
尖扎县
|
丁青县
|
且末县
|
伊金霍洛旗
|
长汀县
|
五原县
|
丽江市
|
富阳市
|
象山县
|
托克逊县
|
扎赉特旗
|
云和县
|
和龙市
|
宜州市
|
谷城县
|
灌阳县
|
阿坝
|
湘西
|
富宁县
|
宁明县
|
蒙城县
|
伊金霍洛旗
|
虞城县
|
阿尔山市
|
正宁县
|
荣昌县
|
开原市
|
河北区
|
平邑县
|
贡山
|
阳春市
|
苗栗市
|
英吉沙县
|
贵德县
|
兴义市
|
城步
|
北宁市
|
万山特区
|
张北县
|
安顺市
|
南昌县
|