【问题标题】:WordnetSynonymParser in LuceneLucene 中的 WordnetSynonymParser
【发布时间】:2014-03-23 00:39:27
【问题描述】:

我是 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 参数。

我在这里做错了什么? 任何帮助表示赞赏。

【问题讨论】:

    标签: java lucene wordnet synonym


    【解决方案1】:

    如果您看到说明 WordNetSynonymParser 有一个方法 add(Reader) 的文档,您可能正在查看旧版本的文档。 4.7 的源代码中肯定没有该方法。从 4.6.0 版本开始,您要查找的方法是 WordnetSynonymParser.parse(Reader)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多