该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间: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站点太多内存吃不消. 刚编译了下源码, 确实没有再好办法了,已经很好了. |
|
返回顶楼 | |
发表时间: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搜索处理不当的缘故了 |
|
返回顶楼 | |
发表时间: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内存 跟空闲内存 应该不夸张了 |
|
返回顶楼 | |
发表时间: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内存 跟空闲内存 应该不夸张了 是这样啊,那我还是建议你分服务器了,呵呵,很少这么搭服务的。 |
|
返回顶楼 | |
发表时间: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) |
|
返回顶楼 | |