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(剖析)-簡介(5634)
2.?DOM的Document對象轉換到String的中文編碼(亂碼)問題(3904)
3.?在lucene實現按關鍵字出現次數排序的列表(1738)
4.?使用JMeter進行壓力測試(1570)
5.?ANT 的javax.xml.parsers.FactoryConfigurationError 錯誤解決辦法(1567)
評論排行榜
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筆記
閱讀(1738)
評論(0)
編輯
收藏
所屬分類:
Java
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
不同方法遍歷列表的時間效率
使用JMeter進行壓力測試
使用TPTP和eclipse進行Profiling(剖析)-簡介
Volatile Fields
在lucene實現按關鍵字出現次數排序的列表
Resin + Struts 的中文亂碼問題解決
Java判定字符是否中文
實現隊列的JavaScript對象
Resin 編譯的奇怪問題解決
Powered by:
BlogJava
Copyright © Raymond的Java筆記
主站蜘蛛池模板:
美女黄网站人色视频免费国产
|
免费一级毛片不卡在线播放
|
国产日产亚洲系列最新
|
亚洲一级视频在线观看
|
a级片在线免费看
|
午夜免费福利影院
|
国产免费久久久久久无码
|
色播在线永久免费视频
|
成人免费乱码大片A毛片
|
伊人婷婷综合缴情亚洲五月
|
日韩一区二区三区免费播放
|
97无码免费人妻超级碰碰碰碰
|
精品国产亚洲一区二区三区
|
kk4kk免费视频毛片
|
免费大黄网站在线观
|
无码专区AAAAAA免费视频
|
国产亚洲精品自在久久
|
一二三四在线观看免费高清中文在线观看
|
亚洲AV无码一区二区三区系列
|
亚洲日韩av无码中文
|
美女视频黄a视频全免费
|
亚洲精品福利在线观看
|
1000部拍拍拍18勿入免费视频软件
|
久久久久国产免费
|
精品久久久久亚洲
|
亚洲va中文字幕无码
|
新最免费影视大全在线播放
|
亚洲国产人成在线观看
|
免费看www视频
|
国内精品免费在线观看
|
久久久久久亚洲AV无码专区
|
99re6在线精品视频免费播放
|
黄色三级三级免费看
|
亚洲欧洲日产国码无码久久99
|
中文在线免费观看
|
精品久久久久亚洲
|
亚洲AV无码无限在线观看不卡
|
国产网站在线免费观看
|
精品免费久久久久国产一区
|
亚洲AV女人18毛片水真多
|
中文字幕亚洲图片
|