4
對於不同的原因,我有Lucene的API最新發布的工作。Lucene的4.0重寫最後一個方法的TokenStream
的API沒有很好的記載又如此,我發現自己不能夠進行簡單的addDocument()
這裏是Writer
初始化:
analyzer = new StopAnalyzer(Version.LUCENE_40);
config = new IndexWriterConfig(Version.LUCENE_40, analyzer);
writer = new IndexWriter(FSDirectory.open(new File(ConfigUtil.getProperty("lucene.directory"))), config);
簡單toDocument
方法:
public static Document getDocument(User user) {
Document doc = new Document();
FieldType storedType = new FieldType();
storedType.setStored(true);
storedType.setTokenized(false);
// Store user data
doc.add(new Field(USER_ID, user.getId().toString(), storedType));
doc.add(new Field(USER_NAME, user.getFirstName() + user.getLastName(), storedType));
FieldType unstoredType = new FieldType();
unstoredType.setStored(false);
unstoredType.setTokenized(true);
// Analyze Location
String tokens = "";
if (user.getLocation() != null && ! user.getLocation().isEmpty()){
for (Tag location : user.getLocation()) tokens += location.getName() + " ";
doc.add(new Field(USER_LOCATION, tokens, unstoredType));
}
}
當運行:
Document userDoc = DocumentManager.getDocument(userWrap);
IndexAccess.getWriter().addDocument(userDoc);
這是錯誤消息我得到:
class org.apache.lucene.analysis.util.ReusableAnalyzerBase overrides final method tokenStream.(Ljava/lang/String;Ljava/io/Reader;)Lorg/apache/lucene/analysis/TokenStream;
它可能是一個簡單的事情,但我找不到任何參考幫助解決這個問題。我使用的是默認analyzer
我跟着,以避免過時Field.Index.ANALYZED
你好,感謝您的答覆。在覈心JAR中沒有'Analyzer Class',因此我下載了'lucene-analysers-common-4.0.jar'。你知道這是否是官方的做法嗎? – Ionut
在覈心Lucene中沒有'Analyzer'是非常不可能的,因爲這個類是索引過程的基礎。我發現它的[文件]中(http://lucene.apache.org/core/4_0_0-BETA/core/org/apache/lucene/analysis/Analyzer.html)。 –
我也覺得奇怪,你用'org.apache.lucene.analysis.util.ReusableAnalyzerBase'因爲這個類是不正常的發現...... util包,但在...分析。這也是一個核心課程。 –