[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