Make it possible to compile against various Lucene versions (hopefully!)
This commit is contained in:
@@ -38,6 +38,9 @@ for flag in $with_clucene; do
|
||||
if test -e "$flag/lib/libclucene.so"; then
|
||||
CLUCENE_LIBS="-L$flag/lib -lclucene"
|
||||
CLUCENE_CXXFLAGS="-I$flag/include -I$config_path"
|
||||
clucene_ver=$(grep _CL_VERSION $config_path/CLucene/clucene-config.h | grep -Eo [[01]].[[0-9]]+.[[0-9]]+)
|
||||
|
||||
echo Lucene ver: $clucene_ver
|
||||
clucene_set_failed=$flag
|
||||
fi
|
||||
fi
|
||||
@@ -62,6 +65,21 @@ else
|
||||
AC_MSG_RESULT($clucene_set_failed)
|
||||
fi
|
||||
|
||||
if test -z "$clucene_ver"; then
|
||||
# optimistic guess :D
|
||||
clucene_ver="1.0.0"
|
||||
fi
|
||||
clucene_apiver=$(echo -e "0.9.18\n$clucene_ver" | sort | head -n1)
|
||||
|
||||
if test "$clucene_ver" == "$clucene_apiver"; then
|
||||
CLUCENE_BONGO_API=1
|
||||
echo Old Lucene API - Lucene Ver: $clucene_ver
|
||||
else
|
||||
CLUCENE_BONGO_API=2
|
||||
echo Current Lucene API - $clucene_ver
|
||||
fi
|
||||
|
||||
AC_SUBST(CLUCENE_BONGO_API)
|
||||
AC_SUBST(CLUCENE_LIBS)
|
||||
AC_SUBST(CLUCENE_CXXFLAGS)
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ sbin_PROGRAMS += bongostore
|
||||
|
||||
bongostore_CPPFLAGS := $(AM_CPPFLAGS) \
|
||||
-I$(top_srcdir)/src/agents/store \
|
||||
-DCLUCENE_BONGO_API=$(CLUCENE_BONGO_API) \
|
||||
$(SQLITE_CFLAGS) \
|
||||
$(CLUCENE_CXXFLAGS)
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ extern "C" {
|
||||
|
||||
#include "lucene-index.h"
|
||||
|
||||
#if CLUCENE_BONGO_API == 1
|
||||
// pre-0.9.18 API
|
||||
|
||||
// Keyword analyzer
|
||||
class KeywordAnalyzer : public Analyzer
|
||||
@@ -56,44 +58,27 @@ KeywordTokenizer::next(Token *token)
|
||||
}
|
||||
token->set(ioBuffer, 0, dataLen);
|
||||
return true;
|
||||
#if 0
|
||||
while (true) {
|
||||
TCHAR c;
|
||||
offset++;
|
||||
if (bufferIndex >= dataLen) {
|
||||
dataLen = input->read(ioBuffer, LUCENE_IO_BUFFER_SIZE);
|
||||
ioBuffer[dataLen] = 0;
|
||||
bufferIndex = 0;
|
||||
}
|
||||
|
||||
if (dataLen <= 0 ) {
|
||||
if (length > 0) {
|
||||
break;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
c = ioBuffer[bufferIndex++];
|
||||
}
|
||||
|
||||
if (length == 0) {
|
||||
start = offset - 1;
|
||||
}
|
||||
|
||||
buffer[length++] = c;
|
||||
if (length == LUCENE_MAX_WORD_LEN) {
|
||||
break;
|
||||
};
|
||||
}
|
||||
|
||||
buffer[length] = 0;
|
||||
|
||||
token->set (buffer, start, start + length);
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif // CLUCENE_BONGO_API == 1
|
||||
|
||||
QueryParser *
|
||||
LuceneIndex::GetQueryParser()
|
||||
{
|
||||
|
||||
if (queryParser) {
|
||||
return queryParser;
|
||||
}
|
||||
|
||||
queryParser = new QueryParser(_T("everything"), analyzer);
|
||||
#if CLUCENE_BONGO_API == 1
|
||||
queryParser->setOperator(lucene::queryParser::QueryParserBase::AND_OPERATOR);
|
||||
#else
|
||||
queryParser->setDefaultOperator(lucene::queryParser::QueryParserBase::AND_OPERATOR);
|
||||
#endif
|
||||
|
||||
return queryParser;
|
||||
}
|
||||
|
||||
LuceneIndex::LuceneIndex() : reader(NULL),
|
||||
writer(NULL),
|
||||
@@ -244,19 +229,3 @@ LuceneIndex::GetIndexSearcher()
|
||||
return searcher;
|
||||
}
|
||||
|
||||
|
||||
QueryParser *
|
||||
LuceneIndex::GetQueryParser()
|
||||
{
|
||||
|
||||
if (queryParser) {
|
||||
return queryParser;
|
||||
}
|
||||
|
||||
queryParser = new QueryParser(_T("everything"), analyzer);
|
||||
queryParser->setOperator(lucene::queryParser::QueryParserBase::AND_OPERATOR);
|
||||
|
||||
return queryParser;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user