*** empty log message ***
This commit is contained in:
parent
f40237a5cd
commit
4ae53e7809
114
src/python/recoll/pyrecoll.cpp
Normal file
114
src/python/recoll/pyrecoll.cpp
Normal file
@ -0,0 +1,114 @@
|
||||
#ifndef lint
|
||||
static char rcsid[] = "@(#$Id: pyrecoll.cpp,v 1.1 2008-05-09 12:34:17 dockes Exp $ (C) 2007 J.F.Dockes";
|
||||
#endif
|
||||
|
||||
#include <Python.h>
|
||||
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
#include "rclinit.h"
|
||||
#include "rclconfig.h"
|
||||
#include "idfile.h"
|
||||
#include "rcldb.h"
|
||||
#include "pathut.h"
|
||||
#include "wasastringtoquery.h"
|
||||
#include "wasatorcl.h"
|
||||
|
||||
static RclConfig *config;
|
||||
|
||||
static PyObject *
|
||||
recollq_idfile(PyObject *self, PyObject *args)
|
||||
{
|
||||
const char *filename;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "s", &filename))
|
||||
return NULL;
|
||||
// string tp = "Newfule";
|
||||
string tp = idFile(filename);
|
||||
return Py_BuildValue("s", tp.c_str());
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
recollq_question(PyObject *self, PyObject *args)
|
||||
{
|
||||
int limit = 100;
|
||||
const char *qs;
|
||||
if (!PyArg_ParseTuple(args, "s", &qs)) {
|
||||
PyErr_SetString(PyExc_EnvironmentError, "Bad query syntax");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Rcl::Db rcldb;
|
||||
string reason;
|
||||
string dbdir = config->getDbDir();
|
||||
rcldb.open(dbdir, config->getStopfile(),
|
||||
Rcl::Db::DbRO, Rcl::Db::QO_STEM);
|
||||
|
||||
Rcl::SearchData *sd = wasaStringToRcl(qs, reason);
|
||||
if (!sd) {
|
||||
PyErr_SetString(PyExc_EnvironmentError, reason.c_str());
|
||||
return 0;
|
||||
}
|
||||
|
||||
RefCntr<Rcl::SearchData> rq(sd);
|
||||
rcldb.setQuery(rq, Rcl::Db::QO_STEM);
|
||||
int cnt = rcldb.getResCnt();
|
||||
cout << "Recoll query: " << rq->getDescription() << endl;
|
||||
if (cnt <= limit)
|
||||
cout << cnt << " results" << endl;
|
||||
else
|
||||
cout << cnt << " results (printing " << limit << " max):" << endl;
|
||||
|
||||
for (int i = 0; i < limit; i++) {
|
||||
int pc;
|
||||
Rcl::Doc doc;
|
||||
if (!rcldb.getDoc(i, doc, &pc))
|
||||
break;
|
||||
char cpc[20];
|
||||
sprintf(cpc, "%d", pc);
|
||||
cout
|
||||
<< doc.mimetype.c_str() << "\t"
|
||||
<< "[" << doc.url.c_str() << "]" << "\t"
|
||||
<< "[" << doc.meta["title"].c_str() << "]" << "\t"
|
||||
<< doc.fbytes.c_str() << "\tbytes" << "\t"
|
||||
<< endl;
|
||||
}
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
|
||||
|
||||
static PyMethodDef recollqMethods[] = {
|
||||
{"idfile", recollq_idfile, METH_VARARGS, "Identify file type."},
|
||||
{"question", recollq_question, METH_VARARGS, "Query language query."},
|
||||
|
||||
{NULL, NULL, 0, NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
|
||||
RclConfig *RclConfig::getMainConfig()
|
||||
{
|
||||
return config;
|
||||
}
|
||||
|
||||
PyMODINIT_FUNC
|
||||
initrecollq(void)
|
||||
{
|
||||
(void) Py_InitModule("recollq", recollqMethods);
|
||||
|
||||
string reason;
|
||||
config = recollinit(0, 0, reason, 0);
|
||||
if (config == 0) {
|
||||
PyErr_SetString(PyExc_EnvironmentError, reason.c_str());
|
||||
return;
|
||||
}
|
||||
if (!config->ok()) {
|
||||
PyErr_SetString(PyExc_EnvironmentError,
|
||||
"Recoll init error: bad environment ?");
|
||||
return;
|
||||
}
|
||||
fprintf(stderr, "initrecollq ok\n");
|
||||
}
|
||||
|
||||
55
src/python/recoll/setup.py
Normal file
55
src/python/recoll/setup.py
Normal file
@ -0,0 +1,55 @@
|
||||
from distutils.core import setup, Extension
|
||||
|
||||
module1 = Extension('recollq',
|
||||
define_macros = [('MAJOR_VERSION', '1'),
|
||||
('MINOR_VERSION', '0'),
|
||||
('HAVE_MKDTEMP', '1'),
|
||||
('HAVE_VASPRINTF', '1'),
|
||||
('UNAC_VERSION', '"1.0.7"'),
|
||||
('STATFS_INCLUDE', '"sys/mount.h"'),
|
||||
('RECOLL_DATADIR',
|
||||
'"/usr/local/share/recoll"')
|
||||
],
|
||||
include_dirs = ['/usr/local/include',
|
||||
'../utils',
|
||||
'../common',
|
||||
'../rcldb',
|
||||
'../query',
|
||||
'../unac'
|
||||
],
|
||||
libraries = ['xapian', 'iconv'],
|
||||
library_dirs = ['/usr/local/lib'],
|
||||
sources = ['recoll_query.cpp',
|
||||
'../common/rclinit.cpp',
|
||||
'../common/rclconfig.cpp',
|
||||
'../common/textsplit.cpp',
|
||||
'../common/unacpp.cpp',
|
||||
'../query/wasastringtoquery.cpp',
|
||||
'../query/wasatorcl.cpp',
|
||||
'../rcldb/rcldb.cpp',
|
||||
'../rcldb/searchdata.cpp',
|
||||
'../rcldb/stemdb.cpp',
|
||||
'../rcldb/pathhash.cpp',
|
||||
'../rcldb/stoplist.cpp',
|
||||
'../unac/unac.c',
|
||||
'../utils/base64.cpp',
|
||||
'../utils/conftree.cpp',
|
||||
'../utils/debuglog.cpp',
|
||||
'../utils/idfile.cpp',
|
||||
'../utils/readfile.cpp',
|
||||
'../utils/md5.cpp',
|
||||
'../utils/pathut.cpp',
|
||||
'../utils/wipedir.cpp',
|
||||
'../utils/smallut.cpp'
|
||||
])
|
||||
|
||||
|
||||
setup (name = 'RecollQuery',
|
||||
version = '1.0',
|
||||
description = 'Enable querying a Recoll full text index',
|
||||
author = 'J.F. Dockes',
|
||||
author_email = 'jean-francois.dockes@wanadoo.fr',
|
||||
long_description = '''
|
||||
This is really just a demo package for now.
|
||||
''',
|
||||
ext_modules = [module1])
|
||||
Loading…
x
Reference in New Issue
Block a user