############################################################################## # # Copyright (c) 2003 Zope Corporation and Contributors. # All Rights Reserved. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE. # ############################################################################## """Query HTML tests $Id$ """ from time import clock from ZODB.Storage.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", "documentation", ] def path2url(p): # convert the paths to a python.org URL # hack: only works for the way Jeremy indexed his copy of python.org marker = "www.python.org/." i = p.find(marker) if i == -1: return p i += len(marker) return "http://www.python.org" + p[i:] from Products.PluginIndexes.TextIndex.TextIndex import And, Or from zope.index.nbest import NBest def main(rt): index = rt["index"] files = rt["files"] times = {} ITERS = range(50) for i in range(11): for q in QUERIES: terms = q.split() for c in " OR ", " AND ": query = c.join(terms) t0 = clock() if TEXTINDEX: if c == " OR ": op = Or else: op = And _q = " ".join(terms) for _ in ITERS: b = index.query(_q, op).bucket() num = len(b) chooser = NBest(10) chooser.addmany(b.items()) results = chooser.getbest() else: try: for _ in ITERS: results, num = index.query(query) except: continue t1 = clock() print "
Query: \"%s\"" % query
print "
Num results: %d" % num
print "
time.clock(): %s" % (t1 - t0)
key = query
if i == 0:
print "
Query: \"%s\"" % k
print "
Min time: %s" % min(v)
print "
All times: %s" % " ".join(map(str, v))
if __name__ == "__main__":
import sys
import getopt
VERBOSE = 0
FSPATH = "Data.fs"
TEXTINDEX = 0
try:
opts, args = getopt.getopt(sys.argv[1:], 'vf:T')
except getopt.error, msg:
print msg
print __doc__
sys.exit(2)
for o, v in opts:
if o == '-v':
VERBOSE += 1
if o == '-f':
FSPATH = v
if o == '-T':
TEXTINDEX = 1
fs = FileStorage(FSPATH, read_only=1)
db = ZODB.DB(fs, cache_size=10000)
cn = db.open()
rt = cn.root()
main(rt)