[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:       2007-10-20 20:43:07
Message-ID: 1192912987.197050.14879.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 727525 by vandenoever:

Allow the CLucene index to be used in RAM. This can by done by using ":memory:" as \
the path for the index.

 M  +1 -1      CMakeLists.txt  
 M  +15 -3     cluceneindexmanager.cpp  
 M  +5 -3      cluceneindexmanager.h  
 M  +9 -5      cluceneindexreader.cpp  


--- trunk/kdesupport/strigi/src/luceneindexer/CMakeLists.txt #727524:727525
@@ -53,7 +53,7 @@
 endif(WIN32)
 add_library(clucene MODULE ${cluceneindex_SRCS})
 set_target_properties(clucene PROPERTIES PREFIX ${prefix})
-target_link_libraries(clucene streamanalyzer ${CLUCENE_LIBRARY})
+target_link_libraries(clucene ${CLUCENE_LIBRARY})
 install(TARGETS clucene LIBRARY DESTINATION ${LIB_DESTINATION}/strigi)
 
 add_executable(luceneindexer luceneindexer.cpp)
--- trunk/kdesupport/strigi/src/luceneindexer/cluceneindexmanager.cpp #727524:727525
@@ -56,6 +56,11 @@
     indexwriter = 0;
     writer = new CLuceneIndexWriter(this);
     analyzer = new StandardAnalyzer();
+    if (path == ":memory:") {
+        ramdirectory = new lucene::store::RAMDirectory();
+    } else {
+        ramdirectory = 0;
+    }
     mtime = 0;
 
     //remove any old segments lying around from crashes, etc
@@ -72,6 +77,7 @@
         r->second = 0;
     }
     closeWriter();
+    delete ramdirectory;
     delete analyzer;
     if (--numberOfManagers == 0) {
 // temporarily commented out because of problem with clucene
@@ -121,16 +127,22 @@
 void
 CLuceneIndexManager::openWriter(bool truncate) {
     try {
-        if (!truncate && IndexReader::indexExists(dbdir.c_str())) {
+        if (ramdirectory) {
+            indexwriter = new IndexWriter(ramdirectory, analyzer, true);
+        } else if (!truncate && IndexReader::indexExists(dbdir.c_str())) {
             if (IndexReader::isLocked(dbdir.c_str())) {
                 IndexReader::unlock(dbdir.c_str());
             }
             indexwriter = new IndexWriter(dbdir.c_str(), analyzer, false);
         } else {
-            indexwriter = new IndexWriter(dbdir.c_str(), analyzer, true, true);
+            indexwriter = new IndexWriter(dbdir.c_str(), analyzer, true);
         }
     } catch (CLuceneError& err) {
-        printf("could not create writer: %s\n", err.what());
+        fprintf(stderr, "could not create writer: %s\n", err.what());
+        indexwriter = 0;
+    } catch (...) {
+        fprintf(stderr, "Unknown exception was thrown.");
+        indexwriter = 0;
     }
 }
 void
--- trunk/kdesupport/strigi/src/luceneindexer/cluceneindexmanager.h #727524:727525
@@ -37,6 +37,9 @@
         class IndexWriter;
         class IndexReader;
     }
+    namespace store {
+        class RAMDirectory;
+    }
 }
 
 class CLuceneIndexReader;
@@ -55,6 +58,8 @@
 
     void openWriter(bool truncate=false);
 public:
+    lucene::store::RAMDirectory* ramdirectory;
+
     explicit CLuceneIndexManager(const std::string& path);
     ~CLuceneIndexManager();
 
@@ -71,7 +76,4 @@
     void setIndexMTime();
 };
 
-//CLUCENEINDEXER_EXPORT Strigi::IndexManager*
-//createCLuceneIndexManager(const char* path);
-
 #endif
--- trunk/kdesupport/strigi/src/luceneindexer/cluceneindexreader.cpp #727524:727525
@@ -137,7 +137,11 @@
     doccount = -1;
     wordcount = -1;
     try {
-        reader = lucene::index::IndexReader::open(dbdir.c_str());
+        if (manager->ramdirectory) {
+            reader = lucene::index::IndexReader::open(manager->ramdirectory);
+        } else {
+            reader = lucene::index::IndexReader::open(dbdir.c_str());
+        }
         //fprintf(stderr,
         //"reader at %s: %i\n", dbdir.c_str(), reader->numDocs());
     } catch (CLuceneError& err) {
@@ -585,14 +589,14 @@
     vector<int32_t>::const_iterator i;
     struct tm t;
     for (i = v.begin(); i < v.end(); ++i) {
-         time_t ti = *i;
+        time_t ti = *i;
 #ifdef _WIN32
         t = *localtime( &ti );   // is thread-safe on win32
 #else
-         localtime_r(&ti, &t);
+        localtime_r(&ti, &t);
 #endif
-         int32_t c = 10000*t.tm_year + 100*t.tm_mon + t.tm_mday;
-         m[c]++;
+        int32_t c = 10000*t.tm_year + 100*t.tm_mon + t.tm_mday;
+        m[c]++;
     }
     vector<pair<string,uint32_t> > h;
     h.reserve(m.size());


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

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