Description: Commiting patch from GHellings to support both CLucene 0.9x and 2.x Leaving the CMake stuff for Greg to commit himself so CMake blame stays with him ;) Origin: commit, revision id: svn-v4:bcd7d363-81e1-0310-97ec-a550e20fc99c:trunk:2661, http://thread.gmane.org/gmane.comp.literature.sword.devel/21816 Author: scribe, Tom Callaway, Deji Akingunola Last-Update: 2011-10-29 X-Bzr-Revision-Id: svn-v4:bcd7d363-81e1-0310-97ec-a550e20fc99c:trunk:2661 === modified file 'src/modules/swmodule.cpp' --- a/src/modules/swmodule.cpp +++ b/src/modules/swmodule.cpp @@ -40,7 +40,6 @@ #ifdef USELUCENE #include -#include //Lucence includes //#include "CLucene.h" @@ -59,6 +58,9 @@ using std::vector; +extern size_t lucene_utf8towcs(wchar_t *, const char *, size_t maxslen); +extern size_t lucene_wcstoutf8 (char *, const wchar_t *, size_t maxslen); + SWORD_NAMESPACE_START SWDisplay SWModule::rawdisp; @@ -1144,7 +1146,7 @@ lucene_utf8towcs(wcharBuffer, keyText, MAX_CONV_SIZE); //keyText must be utf8 // doc->add( *(new Field("key", wcharBuffer, Field::STORE_YES | Field::INDEX_TOKENIZED))); - doc->add( *Field::Text(_T("key"), wcharBuffer ) ); + doc->add(*_CLNEW Field(_T("key"), wcharBuffer, Field::STORE_YES | Field::INDEX_TOKENIZED) ); if (includeKeyInSearch) { @@ -1155,11 +1157,11 @@ } lucene_utf8towcs(wcharBuffer, content, MAX_CONV_SIZE); //content must be utf8 - doc->add( *Field::UnStored(_T("content"), wcharBuffer) ); + doc->add(*_CLNEW Field(_T("content"), wcharBuffer, Field::STORE_NO | Field::INDEX_TOKENIZED)); if (strong.length() > 0) { lucene_utf8towcs(wcharBuffer, strong, MAX_CONV_SIZE); - doc->add( *Field::UnStored(_T("lemma"), wcharBuffer) ); + doc->add(*_CLNEW Field(_T("lemma"), wcharBuffer, Field::STORE_NO | Field::INDEX_TOKENIZED) ); //printf("setting fields (%s).\ncontent: %s\nlemma: %s\n", (const char *)*key, content, strong.c_str()); } @@ -1280,12 +1282,12 @@ //printf("proxBuf after (%s).\nprox: %s\nproxLem: %s\n", (const char *)*key, proxBuf.c_str(), proxLem.c_str()); - doc->add( *Field::UnStored(_T("prox"), wcharBuffer) ); + doc->add(*_CLNEW Field(_T("prox"), wcharBuffer, Field::STORE_NO | Field::INDEX_TOKENIZED) ); good = true; } if (proxLem.length() > 0) { lucene_utf8towcs(wcharBuffer, proxLem, MAX_CONV_SIZE); //keyText must be utf8 - doc->add( *Field::UnStored(_T("proxlem"), wcharBuffer) ); + doc->add(*_CLNEW Field(_T("proxlem"), wcharBuffer, Field::STORE_NO | Field::INDEX_TOKENIZED) ); good = true; } if (good) { @@ -1303,20 +1305,32 @@ //coreWriter->optimize(); coreWriter->close(); +#ifdef CLUCENE2 + d = FSDirectory::getDirectory(target.c_str()); +#endif if (IndexReader::indexExists(target.c_str())) { +#ifndef CLUCENE2 d = FSDirectory::getDirectory(target.c_str(), false); +#endif if (IndexReader::isLocked(d)) { IndexReader::unlock(d); } - fsWriter = new IndexWriter( d, an, false); - } else { + } + else { +#ifndef CLUCENE2 d = FSDirectory::getDirectory(target.c_str(), true); +#endif fsWriter = new IndexWriter(d, an, true); } Directory *dirs[] = { ramDir, 0 }; +#ifdef CLUCENE2 + lucene::util::ConstValueArray< lucene::store::Directory *>dirsa(dirs, 1); + fsWriter->addIndexes(dirsa); +#else fsWriter->addIndexes(dirs); +#endif fsWriter->close(); delete ramDir;