Raymond
Java筆記
導(dǎo)航
BlogJava
首頁
新隨筆
聯(lián)系
聚合
管理
<
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
統(tǒng)計(jì)
隨筆 - 21
文章 - 2
評(píng)論 - 6
引用 - 0
常用鏈接
我的隨筆
我的評(píng)論
我的參與
最新評(píng)論
留言簿
(1)
給我留言
查看公開留言
查看私人留言
隨筆分類
Java(9)
(rss)
JavaScript
(rss)
Software Engineering
(rss)
技術(shù)雜談(1)
(rss)
網(wǎng)頁技術(shù)(1)
(rss)
隨筆檔案
2006年3月 (2)
2006年2月 (4)
2006年1月 (8)
2005年12月 (7)
文章分類
Java(2)
(rss)
JavaScript
(rss)
技術(shù)漫談
(rss)
軟件過程
(rss)
文章檔案
2006年3月 (2)
Java
Java視線論壇
(rss)
技術(shù)漫談
itpub.net
曾登高
數(shù)據(jù)庫
網(wǎng)頁技術(shù)(HTML/JavaScript/CSS)
軟件過程
搜索
最新評(píng)論
1.?re: 使用TPTP和eclipse進(jìn)行Profiling(剖析)-簡介
我支持你,整理過的東西就是自己的東西。
--fenixshadow
2.?re: 使用TPTP和eclipse進(jìn)行Profiling(剖析)-簡介
怎么總是復(fù)制過來復(fù)制過去!沒一點(diǎn)自己的意見嗎
--靠
3.?re: DOM的Document對(duì)象轉(zhuǎn)換到String的中文編碼(亂碼)問題
謝謝你,你的文章幫助了我:)
--AA
4.?re: [導(dǎo)入]網(wǎng)頁模塊拖放
還可以啊~~
--a文學(xué)網(wǎng)—相思無語
5.?re: 實(shí)現(xiàn)隊(duì)列的JavaScript對(duì)象
日,為什么不能放首頁,我覺得不錯(cuò)
--williamxs
閱讀排行榜
1.?使用TPTP和eclipse進(jìn)行Profiling(剖析)-簡介(5637)
2.?DOM的Document對(duì)象轉(zhuǎn)換到String的中文編碼(亂碼)問題(3908)
3.?在lucene實(shí)現(xiàn)按關(guān)鍵字出現(xiàn)次數(shù)排序的列表(1741)
4.?使用JMeter進(jìn)行壓力測試(1578)
5.?ANT 的javax.xml.parsers.FactoryConfigurationError 錯(cuò)誤解決辦法(1569)
評(píng)論排行榜
1.?使用TPTP和eclipse進(jìn)行Profiling(剖析)-簡介(2)
2.?實(shí)現(xiàn)隊(duì)列的JavaScript對(duì)象(2)
3.?DOM的Document對(duì)象轉(zhuǎn)換到String的中文編碼(亂碼)問題(1)
4.?[導(dǎo)入]網(wǎng)頁模塊拖放(1)
5.?使用Struts(0)
在lucene實(shí)現(xiàn)按關(guān)鍵字出現(xiàn)次數(shù)排序的列表
需求: 在lucene索引中建立了很多關(guān)鍵字的索引,想獲得一個(gè)當(dāng)前用戶的關(guān)鍵字列表,并且每個(gè)關(guān)鍵字還帶有使用了多少次的信息。
解決方法:
使用自定義的HitCollector對(duì)象,代碼如下
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;
}
}
功能說明: 每個(gè)搜索到的hits,都會(huì)調(diào)用這個(gè)方法的collect方法,因此可以在這個(gè)對(duì)象當(dāng)中放一個(gè)HashMap,累計(jì)記錄每個(gè)關(guān)鍵字得到的次數(shù)。
排序部分用另外的一個(gè)TagSummary類來獲得,這里就不詳細(xì)給出了。
問題: 這是一個(gè)直觀的方法,但是相信頻繁調(diào)用這樣的方法會(huì)造成服務(wù)器的嚴(yán)重負(fù)擔(dān)。可以考慮一下用緩存的方法,在沒有關(guān)鍵字未曾發(fā)生改變之前,只在第一次調(diào)用這樣的方法,之后把結(jié)果緩存在數(shù)據(jù)表或者內(nèi)存當(dāng)中。有更新的時(shí)候,通過版本號(hào)對(duì)比以決定是否需要更新。
posted on 2006-02-04 14:26
Raymond的Java筆記
閱讀(1741)
評(píng)論(0)
編輯
收藏
所屬分類:
Java
新用戶注冊(cè)
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關(guān)文章:
不同方法遍歷列表的時(shí)間效率
使用JMeter進(jìn)行壓力測試
使用TPTP和eclipse進(jìn)行Profiling(剖析)-簡介
Volatile Fields
在lucene實(shí)現(xiàn)按關(guān)鍵字出現(xiàn)次數(shù)排序的列表
Resin + Struts 的中文亂碼問題解決
Java判定字符是否中文
實(shí)現(xiàn)隊(duì)列的JavaScript對(duì)象
Resin 編譯的奇怪問題解決
Powered by:
BlogJava
Copyright © Raymond的Java筆記
主站蜘蛛池模板:
海南省
|
雷波县
|
安宁市
|
涞源县
|
卢湾区
|
沅陵县
|
固始县
|
任丘市
|
威信县
|
新竹县
|
博爱县
|
同仁县
|
武邑县
|
五莲县
|
奉节县
|
银川市
|
金寨县
|
色达县
|
青铜峡市
|
湘潭市
|
吉安县
|
彭阳县
|
隆德县
|
远安县
|
寿宁县
|
瓦房店市
|
凉城县
|
温泉县
|
三亚市
|
灯塔市
|
鄯善县
|
贵溪市
|
佛坪县
|
冷水江市
|
桦川县
|
盐亭县
|
南充市
|
黄骅市
|
崇明县
|
荣成市
|
景德镇市
|