Raymond
Java筆記
導(dǎo)航
BlogJava
首頁(yè)
新隨筆
聯(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)
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類(lèi)
Java(9)
(rss)
JavaScript
(rss)
Software Engineering
(rss)
技術(shù)雜談(1)
(rss)
網(wǎng)頁(yè)技術(shù)(1)
(rss)
隨筆檔案
2006年3月 (2)
2006年2月 (4)
2006年1月 (8)
2005年12月 (7)
文章分類(lèi)
Java(2)
(rss)
JavaScript
(rss)
技術(shù)漫談
(rss)
軟件過(guò)程
(rss)
文章檔案
2006年3月 (2)
Java
Java視線(xiàn)論壇
(rss)
技術(shù)漫談
itpub.net
曾登高
數(shù)據(jù)庫(kù)
網(wǎng)頁(yè)技術(shù)(HTML/JavaScript/CSS)
軟件過(guò)程
搜索
最新評(píng)論
1.?re: 使用TPTP和eclipse進(jìn)行Profiling(剖析)-簡(jiǎn)介
我支持你,整理過(guò)的東西就是自己的東西。
--fenixshadow
2.?re: 使用TPTP和eclipse進(jìn)行Profiling(剖析)-簡(jiǎn)介
怎么總是復(fù)制過(guò)來(lái)復(fù)制過(guò)去!沒(méi)一點(diǎn)自己的意見(jiàn)嗎
--靠
3.?re: DOM的Document對(duì)象轉(zhuǎn)換到String的中文編碼(亂碼)問(wèn)題
謝謝你,你的文章幫助了我:)
--AA
4.?re: [導(dǎo)入]網(wǎng)頁(yè)模塊拖放
還可以啊~~
--a文學(xué)網(wǎng)—相思無(wú)語(yǔ)
5.?re: 實(shí)現(xiàn)隊(duì)列的JavaScript對(duì)象
日,為什么不能放首頁(yè),我覺(jué)得不錯(cuò)
--williamxs
閱讀排行榜
1.?使用TPTP和eclipse進(jìn)行Profiling(剖析)-簡(jiǎn)介(5643)
2.?DOM的Document對(duì)象轉(zhuǎn)換到String的中文編碼(亂碼)問(wèn)題(3914)
3.?在lucene實(shí)現(xiàn)按關(guān)鍵字出現(xiàn)次數(shù)排序的列表(1747)
4.?使用JMeter進(jìn)行壓力測(cè)試(1581)
5.?ANT 的javax.xml.parsers.FactoryConfigurationError 錯(cuò)誤解決辦法(1571)
評(píng)論排行榜
1.?使用TPTP和eclipse進(jìn)行Profiling(剖析)-簡(jiǎn)介(2)
2.?實(shí)現(xiàn)隊(duì)列的JavaScript對(duì)象(2)
3.?DOM的Document對(duì)象轉(zhuǎn)換到String的中文編碼(亂碼)問(wèn)題(1)
4.?[導(dǎo)入]網(wǎng)頁(yè)模塊拖放(1)
5.?使用Struts(0)
在lucene實(shí)現(xiàn)按關(guān)鍵字出現(xiàn)次數(shù)排序的列表
需求: 在lucene索引中建立了很多關(guān)鍵字的索引,想獲得一個(gè)當(dāng)前用戶(hù)的關(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;
}
}
功能說(shuō)明: 每個(gè)搜索到的hits,都會(huì)調(diào)用這個(gè)方法的collect方法,因此可以在這個(gè)對(duì)象當(dāng)中放一個(gè)HashMap,累計(jì)記錄每個(gè)關(guān)鍵字得到的次數(shù)。
排序部分用另外的一個(gè)TagSummary類(lèi)來(lái)獲得,這里就不詳細(xì)給出了。
問(wèn)題: 這是一個(gè)直觀的方法,但是相信頻繁調(diào)用這樣的方法會(huì)造成服務(wù)器的嚴(yán)重負(fù)擔(dān)。可以考慮一下用緩存的方法,在沒(méi)有關(guān)鍵字未曾發(fā)生改變之前,只在第一次調(diào)用這樣的方法,之后把結(jié)果緩存在數(shù)據(jù)表或者內(nèi)存當(dāng)中。有更新的時(shí)候,通過(guò)版本號(hào)對(duì)比以決定是否需要更新。
posted on 2006-02-04 14:26
Raymond的Java筆記
閱讀(1747)
評(píng)論(0)
編輯
收藏
所屬分類(lèi):
Java
新用戶(hù)注冊(cè)
刷新評(píng)論列表
只有注冊(cè)用戶(hù)
登錄
后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問(wèn)
管理
相關(guān)文章:
不同方法遍歷列表的時(shí)間效率
使用JMeter進(jìn)行壓力測(cè)試
使用TPTP和eclipse進(jìn)行Profiling(剖析)-簡(jiǎn)介
Volatile Fields
在lucene實(shí)現(xiàn)按關(guān)鍵字出現(xiàn)次數(shù)排序的列表
Resin + Struts 的中文亂碼問(wèn)題解決
Java判定字符是否中文
實(shí)現(xiàn)隊(duì)列的JavaScript對(duì)象
Resin 編譯的奇怪問(wèn)題解決
Powered by:
BlogJava
Copyright © Raymond的Java筆記
主站蜘蛛池模板:
曲水县
|
如皋市
|
凌海市
|
江口县
|
大城县
|
清徐县
|
凭祥市
|
扎兰屯市
|
类乌齐县
|
珠海市
|
二连浩特市
|
瓦房店市
|
泊头市
|
临颍县
|
通渭县
|
磴口县
|
湘阴县
|
剑阁县
|
且末县
|
武宣县
|
博爱县
|
久治县
|
河间市
|
元江
|
高尔夫
|
嘉义县
|
井冈山市
|
南宁市
|
南阳市
|
金华市
|
佳木斯市
|
微山县
|
扎赉特旗
|
墨竹工卡县
|
屏山县
|
隆尧县
|
保山市
|
濮阳市
|
辰溪县
|
石家庄市
|
广安市
|