mirror of https://github.com/kiwix/libkiwix.git
Add support of embedded ft-index in zim for kiwix-serve and kiwix-search.
- kiwix-search will try the embedded ft-index if no indexPath is specified in the library.xml or command argument. - kiwix-search also uses xapianSearcher and xapianSearcher needs zimlib, so add zimlib in compilation flag for searcher. - kiwix-serve already depends on zimlib.
This commit is contained in:
parent
a348856c21
commit
6074b5e557
|
@ -18,6 +18,12 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "xapianSearcher.h"
|
#include "xapianSearcher.h"
|
||||||
|
#include <zim/zim.h>
|
||||||
|
#include <zim/file.h>
|
||||||
|
#include <zim/article.h>
|
||||||
|
#include <zim/error.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
namespace kiwix {
|
namespace kiwix {
|
||||||
|
|
||||||
|
@ -30,8 +36,23 @@ namespace kiwix {
|
||||||
|
|
||||||
/* Open Xapian readable database */
|
/* Open Xapian readable database */
|
||||||
void XapianSearcher::openIndex(const string &directoryPath) {
|
void XapianSearcher::openIndex(const string &directoryPath) {
|
||||||
|
bool indexInZim = false;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
zim::File zimFile = zim::File(directoryPath);
|
||||||
|
zim::Article xapianArticle = zimFile.getArticle('Z', "/Z/fulltextIndex/xapian");
|
||||||
|
if (xapianArticle.good())
|
||||||
|
{
|
||||||
|
zim::offset_type dbOffset = xapianArticle.getOffset();
|
||||||
|
int databasefd = open(directoryPath.c_str(), O_RDONLY);
|
||||||
|
lseek(databasefd, dbOffset, SEEK_SET);
|
||||||
|
this->readableDatabase = Xapian::Database(databasefd);
|
||||||
|
}
|
||||||
|
} catch (zim::ZimFileFormatError)
|
||||||
|
{
|
||||||
this->readableDatabase = Xapian::Database(directoryPath);
|
this->readableDatabase = Xapian::Database(directoryPath);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Close Xapian writable database */
|
/* Close Xapian writable database */
|
||||||
void XapianSearcher::closeIndex() {
|
void XapianSearcher::closeIndex() {
|
||||||
|
|
Loading…
Reference in New Issue