我是 Lucene 的新手,我正在尝试使用 WordnetSynonymParser 来使用 wordnet 同义词序言来扩展查询。这是我到目前为止所拥有的:
public class CustomAnalyzer extends Analyzer {
@Override
protected TokenStreamComponents createComponents(String fieldName, Reader reader){
// TODO Auto-generated method stub
Tokenizer source = new ClassicTokenizer(Version.LUCENE_47, reader);
TokenStream filter = new StandardFilter(Version.LUCENE_47, source);
filter = new LowerCaseFilter(Version.LUCENE_47,filter);
SynonymMap mySynonymMap = null;
try {
mySynonymMap = buildSynonym();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
filter = new SynonymFilter(filter, mySynonymMap, false);
return new TokenStreamComponents(source, filter);
}
private SynonymMap buildSynonym() throws IOException
{
File file = new File("wn/wn_s.pl");
InputStream stream = new FileInputStream(file);
Reader rulesReader = new InputStreamReader(stream);
SynonymMap.Builder parser = null;
parser = new WordnetSynonymParser(true, true, new StandardAnalyzer(Version.LUCENE_47));
((WordnetSynonymParser) parser).add(rulesReader);
SynonymMap synonymMap = parser.build();
return synonymMap;
}
}
我收到错误“SynonymMap.Builder 类型中的方法 add(CharsRef, CharsRef, boolean) 不适用于参数 (Reader)”
但是,WordnetSynonymParser 的文档需要 add 函数的 Reader 参数。
我在这里做错了什么?
任何帮助表示赞赏。
如果您看到文档说明WordNetSynonymParser
有一个方法add(Reader)
,您可能正在查看旧版本的文档。 4.7 的源代码中肯定没有该方法。从版本 4.6.0 开始,您正在寻找的方法是WordnetSynonymParser.parse(Reader) http://lucene.apache.org/core/4_6_0/analyzers-common/org/apache/lucene/analysis/synonym/WordnetSynonymParser.html#parse%28java.io.Reader%29.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)