[Zope-CVS] CVS: Products/ZCTextIndex/tests - queryhtml.py:1.1

Jeremy Hylton jeremy@zope.com
Wed, 15 May 2002 19:48:26 -0400

Update of /cvs-repository/Products/ZCTextIndex/tests
In directory cvs.zope.org:/tmp/cvs-serv11965/tests

Added Files:
Log Message:
Add a test script that runs a bunch of queries with AND and OR.

It prints the the results and a summary of the times for the last 10
of 11 trials.

=== Added File Products/ZCTextIndex/tests/queryhtml.py ===
import os
from time import clock

import ZODB
from ZODB.FileStorage import FileStorage

QUERIES = ["nested recursive functions",
           "explicit better than implicit",
           "build hpux",
           "cannot create 'method-wrapper' instances",
            "extension module C++",
           "class method",
           "instance variable",
           "articulate information",
           "import default files",
           "gopher ftp http",

def main(rt):
    index = rt["index"]
    files = rt["files"]
    times = {}
    for i in range(11):
        for q in QUERIES:
            terms = q.split()
            for c in " OR ", " AND ":
                query = c.join(terms)
                t0 = clock()
                results, num = index.query(query)
                t1 = clock()
                print num, query, t1 - t0
                key = query
                if i == 0:
                    for docid, score in results:
                        print score, files[docid]
                l = times.setdefault(key, [])
                l.append(t1 - t0)

    l = times.keys()
    for k in l:
        v = times[k]
        print min(v), k, " ".join(map(str, v))

if __name__ == "__main__":
    import sys
    import getopt
    VERBOSE = 0
    FSPATH = "Data.fs"

        opts, args = getopt.getopt(sys.argv[1:], 'vf:')
    except getopt.error, msg:
        print msg
        print __doc__

    for o, v in opts:
        if o == '-v':
            VERBOSE += 1
        if o == '-f':
            FSPATH = v

    fs = FileStorage(FSPATH, read_only=1)
    db = ZODB.DB(fs)
    cn = db.open()
    rt = cn.root()