【发布时间】:2014-03-24 15:45:36
【问题描述】:
我正在尝试使用 Lucene 的 WordnetSynonymParser 类来创建同义词过滤器,但我不确定我打算将哪些 prolog 文件传递给 parse() 函数。
文档说:
所以我已经下载了 prolog 文件,但我不确定我应该传入哪些文件,以及我应该如何处理。
有人可以指点我正确的方向吗?
感谢您的帮助
编辑:
感谢 femtoRgon 为我指明了 wn_s.pl 的方向。我现在得到了以下代码:
Analyzer tempanalyzer = new SimpleAnalyzer(Version.LUCENE_40);
WordnetSynonymParser synparser = new WordnetSynonymParser(true, true, tempanalyzer);
FileReader doctoread = new FileReader("wn_s.pl");
synparser.parse(doctoread);
SynonymMap synmap = synparser.build();
Analyzer analyzer = new Analyzer() {
@Override
protected TokenStreamComponents createComponents(String fieldName, Reader reader) {
EnglishAnalyzer enganalyzer = new EnglishAnalyzer(Version.LUCENE_40);
CharArraySet engstopset = enganalyzer.getDefaultStopSet();
Tokenizer source = new StandardTokenizer(Version.LUCENE_40, reader);
TokenStream filter = new SynonymFilter(source, synmap, true);
filter = new StandardFilter(Version.LUCENE_40, filter);
filter = new LowerCaseFilter(Version.LUCENE_40, filter);
filter = new StopFilter(Version.LUCENE_40, filter, engstopset);
/*TokenStream filter = new StandardFilter(Version.LUCENE_40, source);
filter = new LowerCaseFilter(Version.LUCENE_40, filter);
filter = new StopFilter(Version.LUCENE_40, filter, engstopset);*/
return new TokenStreamComponents(source, filter);
}
};
然后我计划将其传递给 IndexWriterConfig,但是我得到以下编译错误:
IndexFilesDB.java:133: cannot find symbol
symbol : method parse(java.io.FileReader)
location: class org.apache.lucene.analysis.synonym.WordnetSynonymParser
synparser.parse(doctoread);
我仍然不完全理解 WordnetSynonymParser,这是与类有关的错误还是只是文件未正确传递的简单错误?
感谢您的帮助。
【问题讨论】:
标签: lucene