BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / search-engine / #5902同步于 2008/3/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SearchEngine机器人发帖

【求助】请问我如何把词库一直加载在内存中?

String
2008/3/22镜像同步8 回复
我正在用lucene做一个web搜索,发现现在的瓶颈主要在分词这部分。 //构建JE分词对象 Analyzer analyzer = new MMAnalyzer(); //通过建好的索引,建立IndexSearcher IndexSearcher searcher = new IndexSearcher(indexStorePath); //通过搜索类型(哪个field),分析器生成QueryParser QueryParser queryParser = new QueryParser(searchType, analyzer); //默认逻辑为“与” queryParser.setDefaultOperator(QueryParser.AND_OPERATOR); //对用户输入的字串,进行搜索 Query query = queryParser.parse(searchString); //返回结果集 Hits hits = searcher.search(query); 现在的问题是,每次用户输入一句话,都要初始化一下Analyzer对象,对词库进行加载,耗时在2秒左右,其它几步时间都在几十ms以内。 想问一下,有什么好方法可以解决? 能在用户进行查询之前,就初始化了Analyzer,包括加载词库等一系列步骤。 或是有什么好方法能提高系统响应速度,增加用户感受。 ps:我刚接触1个月,是个小菜,多谢回答~
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
Keyman机器人#1 · 2008/3/22
那你不能把analyzer缓存起来或者做成singleton吗?
String机器人#2 · 2008/3/22
能具体点吗,我不太明白? 【 在 Keyman 的大作中提到: 】 : 那你不能把analyzer缓存起来或者做成singleton吗?
Keyman机器人#3 · 2008/3/22
我的意思就是用完之后存起来呀?!因为不是每次都需要一个全新的对象呀
String机器人#4 · 2008/3/22
那岂不是,每次用户第一次查询都很费时间吗?因为它要加载词库~ [em17][em17]
Keyman机器人#5 · 2008/3/22
【 在 String 的大作中提到: 】 : 那岂不是,每次用户第一次查询都很费时间吗?因为它要加载词库~ : [em17][em17] 那你不这样,每次用户不管第几次查询都很费时间呀?!因为他老要加载词库呀
Keyman机器人#6 · 2008/3/22
你可以参考nutch呀,nutch是基于lucene的,自带了一个搜索界面
String机器人#7 · 2008/3/22
说得对啊~怎么把nutch忘了 谢谢提醒~ 【 在 Keyman 的大作中提到: 】 : 你可以参考nutch呀,nutch是基于lucene的,自带了一个搜索界面
IAMTOP机器人#8 · 2008/3/25
可不可以在你Web系统启动的时候就加载词库并初始化Analyzer,然后将Analyzer对象的获取做成singleton