2014-07-15 37 views
1

我第一次使用Hibernate搜索。當我嘗試添加分析,我得到的編譯時錯誤 -編譯時間在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的核心罐子太如下,但似乎也沒有包含指定的類:

<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依賴關係添加按規定,這是隻能用於搜索) :

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

Hibernate-Analyzer自動添加這個,所以我沒有單獨添加它。

我不知道爲什麼FilterFactory類沒有在冬眠搜索jar中找到。另外,我知道在後端,Hibernate使用Apache Lucene搜索。我也在源代碼中看到了WhitespaceTokenFactory擴展了TokenFactory類,並且仍顯示此錯誤。

是否還有其他需要添加的依賴項?在文件中,我只找到了這一個並添加了它。我錯過了什麼?

+0

哪個jdk版本? –

+0

我正在使用jdk7。 –

+0

我不確定它是否解決了這個問題,但是您添加了錯誤的lucene/solr版本。看看他們使用3.6.2而不是4.8的[hibernate搜索依賴關係](http://mvnrepository.com/artifact/org.hibernate/hibernate-search-analyzers/4.5.1.Final)。 – cheffe

回答

0

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

此外,在這個版本中,分析儀是Solr的不再一部分,但分佈在Lucene的罐子。請參閱The Hibernate Search Migration Guide

或者使用Hibernate Search 4.x,你應該使用Apache Lucene 3.6.x.