论坛首页 Java企业应用论坛

发布IKAnnlyzer3.2.0稳定版 for Lucene3.0

浏览 27881 次
该帖已经被评为良好帖
作者 正文
   发表时间:2010-04-20  
linliangyi2007 写道
zhang310 写道
private static ArrayList<PseudoOriginalBeanVo> getPseudoOriginalList(String str){
        ArrayList list=new ArrayList();
        try {
           StringReader reader = new StringReader(str);
           IKSegmentation analyzer = new IKSegmentation(reader,false);
           Lexeme a=analyzer.next();
           while(a!=null){
               PseudoOriginalBeanVo vo=new PseudoOriginalBeanVo();
               vo.setBegin(a.getBegin());
               vo.setEnd(a.getEndPosition());
               vo.setLength(a.getLength());
               vo.setText(a.getLexemeText());
               vo.setType(a.getLexemeType());
               list.add(vo);
               a=analyzer.next();
           }
       } catch (Exception ex) {
           MyLog.info("vo:"+ex.toString());
       }
       return list;
    }



整个系统就调用这一个方法,需要用到中文分词, 不太熟悉,整个系统就无法释放内存,系统内存监视都切图了.希望楼主以及各位指点



IK的词典是单例模型,在启动时载入,且不会释放内存。里面有27w的词条,是分词需要的。这个肯定是不会释放的,释放就遭了,呵呵



感谢lz这么热心肠. 呵呵. 我是应用在简单的网站里面的, 一个tomcat 这样的程序运行了这样这样七个程序了, 所以内存由原来的最高70M 一下涨到了 400M 现在明白这个道理了, 
看来我我的中文分词只能做个单独的切割词语接口 提供给其他 web站点使用了,要不 web站点太多内存吃不消.
刚编译了下源码,  确实没有再好办法了,已经很好了.
0 请登录后投票
   发表时间:2010-04-21  
zhang310 写道
linliangyi2007 写道
zhang310 写道
private static ArrayList<PseudoOriginalBeanVo> getPseudoOriginalList(String str){
        ArrayList list=new ArrayList();
        try {
           StringReader reader = new StringReader(str);
           IKSegmentation analyzer = new IKSegmentation(reader,false);
           Lexeme a=analyzer.next();
           while(a!=null){
               PseudoOriginalBeanVo vo=new PseudoOriginalBeanVo();
               vo.setBegin(a.getBegin());
               vo.setEnd(a.getEndPosition());
               vo.setLength(a.getLength());
               vo.setText(a.getLexemeText());
               vo.setType(a.getLexemeType());
               list.add(vo);
               a=analyzer.next();
           }
       } catch (Exception ex) {
           MyLog.info("vo:"+ex.toString());
       }
       return list;
    }



整个系统就调用这一个方法,需要用到中文分词, 不太熟悉,整个系统就无法释放内存,系统内存监视都切图了.希望楼主以及各位指点



IK的词典是单例模型,在启动时载入,且不会释放内存。里面有27w的词条,是分词需要的。这个肯定是不会释放的,释放就遭了,呵呵



感谢lz这么热心肠. 呵呵. 我是应用在简单的网站里面的, 一个tomcat 这样的程序运行了这样这样七个程序了, 所以内存由原来的最高70M 一下涨到了 400M 现在明白这个道理了, 
看来我我的中文分词只能做个单独的切割词语接口 提供给其他 web站点使用了,要不 web站点太多内存吃不消.
刚编译了下源码,  确实没有再好办法了,已经很好了.



400M这个夸张了,整个词典之占用27M的内存空间啊,400M估计就是你使用lucene搜索处理不当的缘故了
0 请登录后投票
   发表时间:2010-04-21  
linliangyi2007 写道
zhang310 写道
linliangyi2007 写道
zhang310 写道
private static ArrayList<PseudoOriginalBeanVo> getPseudoOriginalList(String str){
        ArrayList list=new ArrayList();
        try {
           StringReader reader = new StringReader(str);
           IKSegmentation analyzer = new IKSegmentation(reader,false);
           Lexeme a=analyzer.next();
           while(a!=null){
               PseudoOriginalBeanVo vo=new PseudoOriginalBeanVo();
               vo.setBegin(a.getBegin());
               vo.setEnd(a.getEndPosition());
               vo.setLength(a.getLength());
               vo.setText(a.getLexemeText());
               vo.setType(a.getLexemeType());
               list.add(vo);
               a=analyzer.next();
           }
       } catch (Exception ex) {
           MyLog.info("vo:"+ex.toString());
       }
       return list;
    }



整个系统就调用这一个方法,需要用到中文分词, 不太熟悉,整个系统就无法释放内存,系统内存监视都切图了.希望楼主以及各位指点



IK的词典是单例模型,在启动时载入,且不会释放内存。里面有27w的词条,是分词需要的。这个肯定是不会释放的,释放就遭了,呵呵



感谢lz这么热心肠. 呵呵. 我是应用在简单的网站里面的, 一个tomcat 这样的程序运行了这样这样七个程序了, 所以内存由原来的最高70M 一下涨到了 400M 现在明白这个道理了, 
看来我我的中文分词只能做个单独的切割词语接口 提供给其他 web站点使用了,要不 web站点太多内存吃不消.
刚编译了下源码,  确实没有再好办法了,已经很好了.



400M这个夸张了,整个词典之占用27M的内存空间啊,400M估计就是你使用lucene搜索处理不当的缘故了



应该没错了.   tomcat下面七个站点  七个站点 都调用你了中文分词,一个27 七个也得二三百M吧  ,再加上源程序的六七十M内存 跟空闲内存 应该不夸张了
0 请登录后投票
   发表时间:2010-04-21  
zhang310 写道
linliangyi2007 写道
zhang310 写道
linliangyi2007 写道
zhang310 写道
private static ArrayList<PseudoOriginalBeanVo> getPseudoOriginalList(String str){
        ArrayList list=new ArrayList();
        try {
           StringReader reader = new StringReader(str);
           IKSegmentation analyzer = new IKSegmentation(reader,false);
           Lexeme a=analyzer.next();
           while(a!=null){
               PseudoOriginalBeanVo vo=new PseudoOriginalBeanVo();
               vo.setBegin(a.getBegin());
               vo.setEnd(a.getEndPosition());
               vo.setLength(a.getLength());
               vo.setText(a.getLexemeText());
               vo.setType(a.getLexemeType());
               list.add(vo);
               a=analyzer.next();
           }
       } catch (Exception ex) {
           MyLog.info("vo:"+ex.toString());
       }
       return list;
    }



整个系统就调用这一个方法,需要用到中文分词, 不太熟悉,整个系统就无法释放内存,系统内存监视都切图了.希望楼主以及各位指点



IK的词典是单例模型,在启动时载入,且不会释放内存。里面有27w的词条,是分词需要的。这个肯定是不会释放的,释放就遭了,呵呵



感谢lz这么热心肠. 呵呵. 我是应用在简单的网站里面的, 一个tomcat 这样的程序运行了这样这样七个程序了, 所以内存由原来的最高70M 一下涨到了 400M 现在明白这个道理了, 
看来我我的中文分词只能做个单独的切割词语接口 提供给其他 web站点使用了,要不 web站点太多内存吃不消.
刚编译了下源码,  确实没有再好办法了,已经很好了.



400M这个夸张了,整个词典之占用27M的内存空间啊,400M估计就是你使用lucene搜索处理不当的缘故了



应该没错了.   tomcat下面七个站点  七个站点 都调用你了中文分词,一个27 七个也得二三百M吧  ,再加上源程序的六七十M内存 跟空闲内存 应该不夸张了


是这样啊,那我还是建议你分服务器了,呵呵,很少这么搭服务的。
0 请登录后投票
   发表时间:2010-04-22  
你好,我在solr中使用了,IKTokenizerFactory的配置,但是启动solr自带的example却抛出错误,
使用IKTokenizer配置方式,不会出问题。
异常信息如下:

严重: java.lang.AbstractMethodError: org.wltea.analyzer.solr.IKTokenizerFactory
create(Ljava/io/Reader;)Lorg/apache/lucene/analysis/Tokenizer;
        at org.apache.solr.analysis.TokenizerChain.getStream(TokenizerChain.jav
:69)
        at org.apache.solr.analysis.SolrAnalyzer.reusableTokenStream(SolrAnalyz
r.java:74)
        at org.apache.solr.schema.IndexSchema$SolrIndexAnalyzer.reusableTokenSt
eam(IndexSchema.java:364)
        at org.apache.lucene.queryParser.QueryParser.getFieldQuery(QueryParser.
ava:567)
        at org.apache.solr.search.SolrQueryParser.getFieldQuery(SolrQueryParser
java:153)
        at org.apache.solr.util.SolrPluginUtils$DisjunctionMaxQueryParser.getFi
ldQuery(SolrPluginUtils.java:807)
        at org.apache.solr.util.SolrPluginUtils$DisjunctionMaxQueryParser.getFi
ldQuery(SolrPluginUtils.java:794)
        at org.apache.lucene.queryParser.QueryParser.Term(QueryParser.java:1449

        at org.apache.lucene.queryParser.QueryParser.Clause(QueryParser.java:13
7)
        at org.apache.lucene.queryParser.QueryParser.Query(QueryParser.java:126
)
        at org.apache.lucene.queryParser.QueryParser.TopLevelQuery(QueryParser.
ava:1254)
        at org.apache.lucene.queryParser.QueryParser.parse(QueryParser.java:200

        at org.apache.solr.search.DisMaxQParser.getUserQuery(DisMaxQParser.java
195)
        at org.apache.solr.search.DisMaxQParser.addMainQuery(DisMaxQParser.java
158)
        at org.apache.solr.search.DisMaxQParser.parse(DisMaxQParser.java:74)
        at org.apache.solr.search.QParser.getQuery(QParser.java:131)
        at org.apache.solr.handler.component.QueryComponent.prepare(QueryCompon
nt.java:89)
        at org.apache.solr.handler.component.SearchHandler.handleRequestBody(Se
rchHandler.java:174)
        at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHand
erBase.java:131)
        at org.apache.solr.core.SolrCore.execute(SolrCore.java:1316)
        at org.apache.solr.core.QuerySenderListener.newSearcher(QuerySenderList
ner.java:52)
        at org.apache.solr.core.SolrCore$3.call(SolrCore.java:1146)
        at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Sourc
)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics