【问题标题】:compile time Error in Analyzer in hibernate search休眠搜索中分析器中的编译时错误
【发布时间】:2014-07-15 05:43:11
【问题描述】:

我是第一次使用 Hibernate 搜索。当我尝试添加分析器时,出现编译时错误 -

incompatible types: java.lang.Class<org.apache.lucene.analysis.core.WhitespaceTokenizerFactory> cannot be converted to java.lang.Class<? extends org.apache.solr.analysis.TokenizerFactory>

如错误所示,我也尝试如下添加 solr-core jar,但似乎它也不包含指定的类:

<dependency>
    <groupId>org.apache.solr</groupId>
    <artifactId>solr-core</artifactId>
    <version>4.8.0</version>
</dependency>

这是我的实体类:

import org.apache.lucene.analysis.core.LowerCaseFilterFactory;
import org.apache.lucene.analysis.core.WhitespaceTokenizerFactory;
import org.apache.lucene.analysis.ngram.NGramFilterFactory;
import org.hibernate.search.annotations.Analyzer;
import org.hibernate.search.annotations.AnalyzerDef;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Indexed;
import org.hibernate.search.annotations.Parameter;
import org.hibernate.search.annotations.TokenFilterDef;
import org.hibernate.search.annotations.TokenizerDef;

@Entity
@Table(name = "hk_system_message_info")
@Indexed
@AnalyzerDef(name = "myanalyzer",
        tokenizer = @TokenizerDef(factory = WhitespaceTokenizerFactory.class),
        filters = {@TokenFilterDef(factory = LowerCaseFilterFactory.class), @TokenFilterDef(factory = NGramFilterFactory.class, params = { @Parameter(name = "maxGramSize", value = "1024") })})
public class HkMessageEntity implements Serializable {
...
}

我为hibernate-search添加的依赖项(注意:其他hibernate依赖项根据需要添加,仅用于搜索):

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-search-orm</artifactId>
    <version>4.5.1.Final</version>
</dependency>

Hibernate-Analyzer 是自动添加的,所以我没有单独添加。

我不知道为什么在休眠搜索 jar 中找不到 FilterFactory 类。另外,我知道在后端,Hibernate 使用 Apache Lucene 搜索。我也在源代码中看到WhitespaceTokenFactory 扩展了TokenFactory 类,但仍然显示此错误。

是否还有其他需要添加的依赖项?在文档中,我只找到了这个并添加了它。我错过了什么?

【问题讨论】:

  • 我不确定它是否能解决它,但你添加了错误的 lucene/solr 版本。看看hibernate search dependencies 他们使用的是 3.6.2 而不是 4.8。

标签: java hibernate solr lucene hibernate-search


【解决方案1】:

要使用 Apache Lucene 4.8(或相同版本的 Solr),您需要 Hibernate Search 5.0

同样在这个版本中,分析器不再是 Solr 的一部分,而是分布在 Lucene jar 中。

另见The Hibernate Search Migration Guide

如果要使用 Hibernate Search 4.x,您应该使用 Apache Lucene 3.6.x。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 2017-04-17
    • 1970-01-01
    • 2017-08-20
    • 2017-02-05
    相关资源
    最近更新 更多