提交 526ec3e3 authored 作者: Thomas Mueller's avatar Thomas Mueller

When using Lucene 3, the index files were not always closed when the database was closed.

上级 0e97eb55
...@@ -281,10 +281,11 @@ public class FullTextLucene extends FullText { ...@@ -281,10 +281,11 @@ public class FullTextLucene extends FullText {
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30); Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);
IndexWriter writer = new IndexWriter(indexDir, analyzer, IndexWriter writer = new IndexWriter(indexDir, analyzer,
recreate, IndexWriter.MaxFieldLength.UNLIMITED); recreate, IndexWriter.MaxFieldLength.UNLIMITED);
//see http://wiki.apache.org/lucene-java/NearRealtimeSearch //see http://wiki.apache.org/lucene-java/NearRealtimeSearch
IndexReader reader = writer.getReader(); IndexReader reader = writer.getReader();
access = new IndexAccess(); access = new IndexAccess();
access.writer = writer; access.writer = writer;
access.reader = reader;
access.searcher = new IndexSearcher(reader); access.searcher = new IndexSearcher(reader);
//## LUCENE3 end ## //## LUCENE3 end ##
} catch (IOException e) { } catch (IOException e) {
...@@ -364,8 +365,9 @@ public class FullTextLucene extends FullText { ...@@ -364,8 +365,9 @@ public class FullTextLucene extends FullText {
access.modifier.flush(); access.modifier.flush();
access.modifier.close(); access.modifier.close();
## LUCENE2 end ##*/ ## LUCENE2 end ##*/
//## LUCENE3 begin ## //## LUCENE3 begin ##
access.searcher.close(); access.searcher.close();
access.reader.close();
access.writer.close(); access.writer.close();
//## LUCENE3 end ## //## LUCENE3 end ##
} catch (Exception e) { } catch (Exception e) {
...@@ -670,7 +672,10 @@ public class FullTextLucene extends FullText { ...@@ -670,7 +672,10 @@ public class FullTextLucene extends FullText {
indexAccess.writer.addDocument(doc); indexAccess.writer.addDocument(doc);
indexAccess.writer.commit(); indexAccess.writer.commit();
//Recreate Searcher with the IndexWriter's reader. //Recreate Searcher with the IndexWriter's reader.
indexAccess.searcher.close();
indexAccess.reader.close();
IndexReader reader = indexAccess.writer.getReader(); IndexReader reader = indexAccess.writer.getReader();
indexAccess.reader = reader;
indexAccess.searcher = new IndexSearcher(reader); indexAccess.searcher = new IndexSearcher(reader);
} catch (IOException e) { } catch (IOException e) {
throw convertException(e); throw convertException(e);
...@@ -736,6 +741,13 @@ public class FullTextLucene extends FullText { ...@@ -736,6 +741,13 @@ public class FullTextLucene extends FullText {
//## LUCENE3 begin ## //## LUCENE3 begin ##
IndexWriter writer; IndexWriter writer;
//## LUCENE3 end ## //## LUCENE3 end ##
/**
* The index reader.
*/
//## LUCENE3 begin ##
IndexReader reader;
//## LUCENE3 end ##
/** /**
* The index searcher. * The index searcher.
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论