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筆記
主站蜘蛛池模板:
亚洲avav天堂av在线不卡
|
亚洲精品乱码久久久久久下载
|
亚洲视频在线观看2018
|
亚洲无删减国产精品一区
|
亚洲欧洲精品成人久久曰
|
免费无码又爽又刺激高潮软件
|
亚洲国产精品碰碰
|
中文字幕av无码不卡免费
|
国产亚洲福利精品一区
|
亚洲AV无码国产精品永久一区
|
国产精品区免费视频
|
亚洲成?Ⅴ人在线观看无码
|
国产精品亚洲专区一区
|
久久久青草青青国产亚洲免观
|
亚洲va中文字幕无码久久不卡
|
全免费a级毛片免费看
|
亚洲黄色网址在线观看
|
国产一卡二卡3卡四卡免费
|
亚洲人成色7777在线观看
|
久久www免费人成精品香蕉
|
国产免费观看网站
|
成人精品综合免费视频
|
亚洲国产精品无码成人片久久
|
亚洲免费视频在线观看
|
中文亚洲成a人片在线观看
|
你好老叔电影观看免费
|
久久亚洲国产精品成人AV秋霞
|
久久久久国色AV免费看图片
|
亚洲国产精品成人综合色在线
|
亚洲国产成人影院播放
|
免费成人在线视频观看
|
国产亚洲国产bv网站在线
|
国产精品xxxx国产喷水亚洲国产精品无码久久一区
|
亚洲日本VA午夜在线影院
|
亚洲第一区在线观看
|
伊人久久免费视频
|
亚洲精品成a人在线观看夫
|
国产亚洲精久久久久久无码AV
|
午夜毛片不卡高清免费
|
一级特黄录像免费播放中文版
|
国产aa免费视频
|