WordnetSynonymParser在Lucene
我是Lucene的新手,我正在尝试使用WordnetSynonymParser来使用wordnet同义词prolog扩展查询。 这就是我现在所拥有的:
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; } }
我得到错误“方法添加(CharsRef,CharsRef,boolean)类型SynonymMap.Builder不适用于参数(Reader)”
但是,WordnetSynonymParser的文档需要add函数的Reader参数。
我在这做错了什么? 任何帮助表示赞赏。
如果您看到文档声明WordNetSynonymParser
有一个方法add(Reader)
,您可能正在查看旧版本的文档。 4.7的源代码中肯定没有这种方法。 从版本4.6.0开始,您要查找的方法是WordnetSynonymParser.parse(Reader)
。