高手你好,感谢您提供的这个盘古分词组件。我在使用盘古分词时遇到以下问题:

May 24, 2012 at 7:48 AM

我使用的dll版本是:
Lucene.Net 2.9.2.1
PanGu 2.3.0.0
PanGu.Lucene.Analyzer 1.3.1.0

IndexWriter writer = new IndexWriter(d, new PanGuAnalyzer(), true);
doc.Add(new Field("PID", dr["PID"].ToString(), Field.Store.YES, Field.Index.NO));
writer.AddDocument(doc);//当执行这行是就报了以下异常

2012-05-24 15:28:06,038 [5] INFO  WindowsServiceLog - 2012/5/24 15:28:04建立索引出现异常引发类型为“System.OutOfMemoryException”的异常。   在 Lucene.Net.Index.IndexWriter.HandleOOM(OutOfMemoryException oom, String location) 位置 C:\ApolloWorkFolder\test\laboratory\Opensource\Lucene.Net\src\Lucene.Net\Index\IndexWriter.cs:行号 6677
   在 Lucene.Net.Index.IndexWriter.AddDocument(Document doc, Analyzer analyzer) 位置 C:\ApolloWorkFolder\test\laboratory\Opensource\Lucene.Net\src\Lucene.Net\Index\IndexWriter.cs:行号 2888
   在 Lucene.Net.Index.IndexWriter.AddDocument(Document doc) 位置 C:\ApolloWorkFolder\test\laboratory\Opensource\Lucene.Net\src\Lucene.Net\Index\IndexWriter.cs:行号 2831
  
但是当我使用new Lucene.Net.Analysis.Standard.StandardAnalyzer()替换掉new PanGuAnalyzer()时,就正常了,但中文分词后都是单字的。
能帮忙看看问题出在哪里吗?谢谢了

Coordinator
Jun 18, 2012 at 12:53 AM

这个应该不是盘古分词的问题,而是lucene的问题。为什么用 StandardAnalyzer 没问题,可能是 StandardAnalyzer 分出来的词比pangu 的少,没有出现内存不足。

可能和你调用 lucene 的方式有关,lucene 的较新版本不能每次都去打开 WriterIndex ,否则内存会增长很快。