1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
#!/usr/bin/python
import os
import sys
import xapian
from optparse import OptionParser
sys.path.insert(0, "../")
from softwarecenter.enums import *
from softwarecenter.utils import *
def run_query(parser, search_terms, verbose):
for search_term in search_terms:
search_query = parser.parse_query(search_term,
xapian.QueryParser.FLAG_WILDCARD|
xapian.QueryParser.FLAG_PARTIAL)
print search_query
enquire = xapian.Enquire(db)
enquire.set_query(search_query)
with ExecutionTime("enquire"):
mset = enquire.get_mset(0, db.get_doccount())
for m in mset:
doc = m.document
print doc, doc.get_data()
if verbose:
for t in doc.termlist():
print "'%s': %s (%s); " % (t.term, t.wdf, t.termfreq),
print "\n"
if __name__ == "__main__":
parser = OptionParser()
parser.add_option("-v", "--verbose", action="store_true",
default=False,
help="print found apps/pkgs too")
(options, args) = parser.parse_args()
pathname = os.path.join(XAPIAN_BASE_PATH, "xapian")
db = xapian.Database(pathname)
axi = xapian.Database("/var/lib/apt-xapian-index/index")
db.add_database(axi)
parser = xapian.QueryParser()
parser.set_database(db)
parser.add_boolean_prefix("pkg","XP")
parser.add_boolean_prefix("pkg","AP")
parser.add_prefix("pkg_wildcard","XP")
parser.add_prefix("pkg_wildcard","AP")
run_query(parser, args, options.verbose)
|