Java 如何在lucene 6.2.0中使用同义词AP

Java 如何在lucene 6.2.0中使用同义词AP,java,lucene,Java,Lucene,我正在使用ApacheLucene6.2.0,并尝试实现一个用于搜索的自定义分析器。 这是我的分析课 public static class myAnalyzer extends Analyzer { @Override protected TokenStreamComponents createComponents(String reader) { final StandardTokenizer tok = new StandardTokeni

我正在使用ApacheLucene6.2.0,并尝试实现一个用于搜索的自定义分析器。 这是我的分析课

        public static class  myAnalyzer extends Analyzer
{
    @Override
    protected TokenStreamComponents createComponents(String reader) {
        final StandardTokenizer tok = new StandardTokenizer();

        TokenStream result = new StandardFilter((TokenStream) tok);
        result = new LowerCaseFilter(result);
        return new TokenStreamComponents(tok, result); 

}
}
现在,当我搜索索引时,它会给我这样的非法状态异常

Exception in thread "main" java.lang.IllegalStateException: TokenStream contract violation: reset()/close() call missing, reset() called multiple times, or subclass does not call super.reset(). Please see Javadocs of TokenStream class for more information about the correct consuming workflow.
at org.apache.lucene.analysis.Tokenizer$1.read(Tokenizer.java:109)

i tried using result.close(); but it didnt solved the problem..
so what am i doing wrong ? am I using two instances of the same analyzer.

任何代码示例都会非常有用。

createComponents
不再接受读取器参数,因此不会调用该方法。实际调用的方法实际上覆盖了
Analyzer
中的方法,在您的实现中,该方法只是一个返回null的存根


因此,删除
createComponents(string,Reader)
,并将代码放入
createComponents(string)
(当然,删除对
Tokenizer.setReader的调用)。

您遇到了什么问题?将同义词映射直接传递到同义词过滤器的构造函数中。谢谢FemtorGon谢谢您的帮助