~mvo/software-center/oneconf-lp981536

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.paths import XAPIAN_BASE_PATH
from softwarecenter.utils import ExecutionTime

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)