[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdesupport/strigi/src/luceneindexer
From:       Jos van den Oever <jos () vandenoever ! info>
Date:       2009-01-21 10:28:04
Message-ID: 1232533684.731590.20770.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 914518 by vandenoever:

Use lucene::store::Directory everywhere.

instead of using the path for filesystem directories and RAMDirectory
for a memory index. This makes the code cleaner and memory management
more clear.

 M  +10 -12    cluceneindexmanager.cpp  
 M  +2 -2      cluceneindexmanager.h  
 M  +1 -5      cluceneindexreader.cpp  


--- trunk/kdesupport/strigi/src/luceneindexer/cluceneindexmanager.cpp #914517:914518
@@ -60,9 +60,9 @@
     writer = new CLuceneIndexWriter(this);
     analyzer = new StandardAnalyzer();
     if (path == ":memory:") {
-        ramdirectory = new lucene::store::RAMDirectory();
+        directory = new lucene::store::RAMDirectory();
     } else {
-        ramdirectory = 0;
+        directory = FSDirectory::getDirectory(path.c_str(), false);
     }
     gettimeofday(&mtime, 0);
 
@@ -80,7 +80,9 @@
         r->second = 0;
     }
     closeWriter();
-    delete ramdirectory;
+    // no reader or writer should be referring to this directory anymore
+    directory->close();
+    delete directory;
     delete analyzer;
     if (--numberOfManagers == 0) {
 // temporarily commented out because of problem with clucene
@@ -126,17 +128,13 @@
 void
 CLuceneIndexManager::openWriter(bool truncate) {
     try {
-        if (ramdirectory) {
-            bool create = truncate || !IndexReader::indexExists(ramdirectory);
-            indexwriter = new IndexWriter(ramdirectory, analyzer, create);
-        } else if (!truncate && IndexReader::indexExists(dbdir.c_str())) {
-            if (IndexReader::isLocked(dbdir.c_str())) {
-                IndexReader::unlock(dbdir.c_str());
+        bool create = truncate || !IndexReader::indexExists(directory);
+        if (!create) {
+            if (IndexReader::isLocked(directory)) {
+                IndexReader::unlock(directory);
             }
-            indexwriter = new IndexWriter(dbdir.c_str(), analyzer, false);
-        } else {
-            indexwriter = new IndexWriter(dbdir.c_str(), analyzer, true);
         }
+        indexwriter = new IndexWriter(directory, analyzer, create);
     } catch (CLuceneError& err) {
         fprintf(stderr, "could not create writer: %s\n", err.what());
         indexwriter = 0;
--- trunk/kdesupport/strigi/src/luceneindexer/cluceneindexmanager.h #914517:914518
@@ -38,7 +38,7 @@
         class IndexReader;
     }
     namespace store {
-        class RAMDirectory;
+        class Directory;
     }
 }
 
@@ -58,7 +58,7 @@
 
     void openWriter(bool truncate=false);
 public:
-    lucene::store::RAMDirectory* ramdirectory;
+    lucene::store::Directory* directory;
 
     explicit CLuceneIndexManager(const std::string& path);
     ~CLuceneIndexManager();
--- trunk/kdesupport/strigi/src/luceneindexer/cluceneindexreader.cpp #914517:914518
@@ -144,11 +144,7 @@
     doccount = -1;
     wordcount = -1;
     try {
-        if (manager->ramdirectory) {
-            reader = lucene::index::IndexReader::open(manager->ramdirectory);
-        } else {
-            reader = lucene::index::IndexReader::open(dbdir.c_str());
-        }
+        reader = lucene::index::IndexReader::open(manager->directory);
         // fprintf(stderr,
         // "READER at %s: %i\n", dbdir.c_str(), reader->numDocs());
     } catch (CLuceneError& err) {
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic