2012-12-15 45 views
0

我正在使用Hibernate Search和Lucene 3.5並試圖實現「你的意思是?」拼寫檢查搜索。我想使用索引作爲字典。我遇到的問題是indexDirectory的文檔與當前的方法簽名不匹配,我找不到任何有關如何從任何其他來源實現的細節。任何人都可以將我指向正確的方向嗎?以下是我從方法簽名本身解密的內容,但它只是導致鎖定異常。Hibernate-Search和Lucene 3.5 SpellChecker

Directory directory = FSDirectory.open(FileUtils.toFile(new URL("file:lucene/indexes/"))); 

IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LUCENE_35, new    StandardAnalyzer(Version.LUCENE_35)); 

IndexWriter indexWriter = new IndexWriter(directory, indexWriterConfig); 
IndexReader indexReader = IndexReader.open(indexWriter, false); 

this.spellChecker = new SpellChecker(directory); 
this.spellChecker.indexDictionary(new LuceneDictionary(indexReader, "favorite"), indexWriterConfig, true); 

回答

0

找到解決方案。訂單很重要。

Directory directory = FSDirectory.open(FileUtils.toFile(new URL("file:lucene/indexes/"))); 
this.spellChecker = new SpellChecker(directory); 
IndexReader indexReader = IndexReader.open(directory, true); 
LuceneDictionary dictionary = new LuceneDictionary(indexReader, "field"); 
IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35)); 
this.spellChecker.indexDictionary(dictionary, indexWriterConfig, true); 
+0

我認爲問題是一次打開多個IndexWriters? – femtoRgon

+0

正確。首先打開讀者解決了這個問題,因爲它沒有獲得鎖定。 – Doug