Hello,
I refactor Moin search code to use xappy instead of xapwrap. The first
think I tried was querying existing database using xappy. Indexing was
done by xapwrap.
Here is the code that queries the database:
#!/usr/bin/env python
import os
import re
import sys
import xappy
_whitespace_re = re.compile('\s+')
def open_index(dbpath):
return xappy.SearchConnection(dbpath)
def main(request, argv):
dbpath = os.path.join(request.cfg.cache_dir, 'xapian/index')
search = ' '.join(argv[1:])
sconn = open_index(dbpath)
print "Searching %d documents for \"%s\"" % (
sconn.get_doccount(),
search
)
q = sconn.query_parse(search, default_op=sconn.OP_AND)
print q
results = sconn.search(q, 0, 10)
if results.estimate_is_exact:
print "Found %d results" % results.matches_estimated
else:
print "Found approximately %d results" %
results.matches_estimated
for result in results:
print
result.id
if __name__ == '__main__':
from MoinMoin.web.contexts import ScriptContext
request = ScriptContext()
main(request, sys.argv)
The output is:
$ python search.py SystemInfo
2009-07-25 20:53:02,207 WARNING MoinMoin.log:139 using logging
configuration read from built-in fallback in MoinMoin.log module!
2009-07-25 20:53:02,418 INFO MoinMoin.config.multiconfig:127 using
wiki config: /Users/dimazest/Documents/gsoc/2009/moinmoin/src/1.9-
search/wikiconfig.pyc
Searching 1771 documents for "SystemInfo"
Xapian::Query((systeminfo:(pos=1) AND_MAYBE systeminfo:(pos=1)))
Found 73 results
None
None
None
None
None
None
None
None
None
None
The problem is that it finds some documents, but I cannot get IDs of
them. Any ideas how can i get IDs and other fields?
Tnanks,
--
Dima