You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@lucene.apache.org by ot...@apache.org on 2008/05/22 08:21:18 UTC

svn commit: r659013 - in /lucene/java/trunk: CHANGES.txt contrib/spellchecker/src/java/org/apache/lucene/search/spell/SpellChecker.java

Author: otis
Date: Wed May 21 23:21:17 2008
New Revision: 659013

URL: http://svn.apache.org/viewvc?rev=659013&view=rev
Log:
LUCENE-1152 Fix for calling indexDictionary after clearIndex call

Modified:
    lucene/java/trunk/CHANGES.txt
    lucene/java/trunk/contrib/spellchecker/src/java/org/apache/lucene/search/spell/SpellChecker.java

Modified: lucene/java/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/java/trunk/CHANGES.txt?rev=659013&r1=659012&r2=659013&view=diff
==============================================================================
--- lucene/java/trunk/CHANGES.txt (original)
+++ lucene/java/trunk/CHANGES.txt Wed May 21 23:21:17 2008
@@ -95,6 +95,10 @@
  8. LUCENE-1003: Stop RussianAnalyzer from removing numbers.
     (TUSUR OpenTeam, Dmitry Lihachev via Otis Gospodnetic)
 
+ 9. LUCENE-1152: SpellChecker fix around clearIndex and indexDictionary
+    methods, plus removal of IndexReader reference.
+    (Naveen Belkale via Otis Gospodnetic)
+
 New features
 
  1. LUCENE-1137: Added Token.set/getFlags() accessors for passing more information about a Token through the analysis

Modified: lucene/java/trunk/contrib/spellchecker/src/java/org/apache/lucene/search/spell/SpellChecker.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/contrib/spellchecker/src/java/org/apache/lucene/search/spell/SpellChecker.java?rev=659013&r1=659012&r2=659013&view=diff
==============================================================================
--- lucene/java/trunk/contrib/spellchecker/src/java/org/apache/lucene/search/spell/SpellChecker.java (original)
+++ lucene/java/trunk/contrib/spellchecker/src/java/org/apache/lucene/search/spell/SpellChecker.java Wed May 21 23:21:17 2008
@@ -72,7 +72,6 @@
   private float bStart = 2.0f;
   private float bEnd = 1.0f;
 
-  private IndexReader reader;
   private IndexSearcher searcher;
 
   // minimum score for hits generated by the spell checker query
@@ -284,11 +283,12 @@
    * @throws IOException
    */
   public void clearIndex() throws IOException {
-    if (IndexReader.isLocked(spellIndex)){
-      IndexReader.unlock(spellIndex);
-    }
     IndexWriter writer = new IndexWriter(spellIndex, null, true);
     writer.close();
+    
+    //close the old searcher
+    searcher.close();
+    searcher = new IndexSearcher(this.spellIndex);
   }
 
   /**
@@ -298,10 +298,7 @@
    * @return true iff the word exists in the index
    */
   public boolean exist(String word) throws IOException {
-    if (reader == null) {
-      reader = IndexReader.open(spellIndex);
-    }
-    return reader.docFreq(new Term(F_WORD, word)) > 0;
+    return searcher.docFreq(new Term(F_WORD, word)) > 0;
   }
 
   /**
@@ -310,11 +307,7 @@
    * @throws IOException
    */
   public void indexDictionary(Dictionary dict) throws IOException {
-    if (IndexReader.isLocked(spellIndex)){
-      IndexReader.unlock(spellIndex);
-    }
-    IndexWriter writer = new IndexWriter(spellIndex, new WhitespaceAnalyzer(),
-        !IndexReader.indexExists(spellIndex));
+    IndexWriter writer = new IndexWriter(spellIndex, true, new WhitespaceAnalyzer());
     writer.setMergeFactor(300);
     writer.setMaxBufferedDocs(150);
 
@@ -338,12 +331,6 @@
     // close writer
     writer.optimize();
     writer.close();
-    // close reader so it will be re-opened (and see the new content) when exist()
-    // is called the next time:
-    if (reader != null) {
-      reader.close();
-      reader = null;
-    }
     // also re-open the spell index to see our own changes when the next suggestion
     // is fetched:
     searcher.close();
@@ -395,17 +382,4 @@
       }
     }
   }
-
-  /**
-   * Closes the internal IndexReader.
-   */
-  protected void finalize() throws Throwable {
-    try {
-      if (reader != null) {
-        reader.close();
-      }
-    } finally {
-      super.finalize();
-    }
-  }
 }