import sys from recoll import recoll if sys.version_info[0] >= 3: ISP3 = True else: ISP3 = False def utf8string(s): if ISP3: return s else: return s.encode('utf8') if ISP3: def u(x): return x else: import codecs def u(x): return codecs.unicode_escape_decode(x)[0] db = recoll.connect() query = db.query() nres = query.execute("testfield:testfieldvalue1", stemming=0) qs = "Xapian query: [%s]" % query.getxquery() print(utf8string(qs)) print("Result count: %d %d" % (nres, query.rowcount)) for doc in query: print("doc.title: [%s]"%utf8string(doc.title)) print("doc.testfield: [%s]"%utf8string(doc.testfield)) for fld in ('title', 'testfield', 'filename'): print("getattr(doc, %s) -> [%s]"%(fld,utf8string(getattr(doc, fld)))) print("doc.get(%s) -> [%s]"%(fld,utf8string(doc.get(fld)))) print("\nfor fld in sorted(doc.keys()):") for fld in sorted(doc.keys()): print(utf8string("[%s] -> [%s]" % (fld, getattr(doc, fld)))) print("\nfor k,v in sorted(doc.items().items()):") for k,v in sorted(doc.items().items(), key=lambda itm: itm[0]): print(utf8string("[%s] -> [%s]" % (k, v))) print("\nAccented query:") uqs = u('title:"\u00e9t\u00e9 \u00e0 no\u00ebl"') print("User query [%s]"%utf8string(uqs)) nres = query.execute(uqs, stemming=0) #nres = query.execute('title:"ete a noel"', stemming=0) qs = "Xapian query: [%s]" % query.getxquery() print(utf8string(qs)) print("nres %d" %(nres,)) doc = query.fetchone() print("doc.title: [%s]"%utf8string(doc.title))