版本6.4.0的Lucene异常NoSuchMethodError

时间:2017-02-02 22:04:00

标签: java lucene text-analysis

我对Lucene来说比较新,并且玩最新版本的6.4.0。

我写过一个用于做同义词的cutom分析器类,

public class MySynonymAnalyzer extends Analyzer {

@Override
protected TokenStreamComponents createComponents(String fieldName) {
    Tokenizer source = new ClassicTokenizer();
    TokenStream filter = new StandardFilter(source);
    filter = new LowerCaseFilter(filter);
    filter = new SynonymGraphFilter(filter, getSynonymsMap(), false);
    filter = new FlattenGraphFilter(filter);
    return new TokenStreamComponents(source, filter);
}

private SynonymMap getSynonymsMap() {
    try {
        SynonymMap.Builder builder = new SynonymMap.Builder(true);
        builder.add(new CharsRef("work"), new CharsRef("labor"), true);
        builder.add(new CharsRef("work"), new CharsRef("effort"), true);
        SynonymMap mySynonymMap = builder.build();
        return mySynonymMap;
    } catch (Exception ex) {
        return null;
    }
}

在我调用getSynonymsMap()的行中,我得到以下异常:

  

线程“main”中的异常java.lang.NoSuchMethodError:org.apache.lucene.util.UnicodeUtil.UTF16toUTF8WithHash([CIILorg / apache / lucene / util / BytesRef;)I       at org.apache.lucene.analysis.synonym.SynonymMap $ Builder.add(SynonymMap.java:192)       at org.apache.lucene.analysis.synonym.SynonymMap $ Builder.add(SynonymMap.java:239)       at m2_lab4.MySynonymAnalyzer.getSynonymsMap(MySynonymAnalyzer.java:37)       at m2_lab4.MySynonymAnalyzer.createComponents(MySynonymAnalyzer.java:28)       在org.apache.lucene.analysis.Analyzer.tokenStream(Analyzer.java:162)       在org.apache.lucene.document.Field.tokenStream(Field.java:568)

版本6.4.0似乎在类UTF16toUTF8WithHash中没有方法UnicodeUtil。我正在使用lucene 6.4.0中的所有内容,并且在我的类路径中似乎没有任何旧的版本化jar。这就是我的maven dependendies的样子:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <lucene.version>6.4.0</lucene.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-core</artifactId>
        <version>${lucene.version}</version>
    </dependency>

    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-analyzers-common</artifactId>
        <version>${lucene.version}</version>
    </dependency>


    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-queryparser</artifactId>
        <version>${lucene.version}</version>
    </dependency>

    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-queries</artifactId>
        <version>${lucene.version}</version>
    </dependency>

    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-analyzers</artifactId>
        <version>3.6.2</version>
    </dependency>

    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-facet</artifactId>
        <version>${lucene.version}</version>
    </dependency>

    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-spatial</artifactId>
        <version>${lucene.version}</version>
    </dependency>

    <dependency>
            <groupId>com.spatial4j</groupId>
            <artifactId>spatial4j</artifactId>
            <version>0.4.1</version>
    </dependency>


    <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20090211</version>
    </dependency>
    <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-io</artifactId>
            <version>1.3.2</version>
    </dependency>
</dependencies>

知道发生了什么事吗?我特别对异常描述中的[CIILorg/apache/lucene/util/BytesRef文本感到困惑。

0 个答案:

没有答案