#!/usr/bin/python2.6 # coding: utf-8 from whoosh.index import open_dir from whoosh.qparser import QueryParser import whoosh.fields as fields import whoosh.analysis as analysis from whoosh import highlight import flask from flask import Flask app = Flask("booksearch") index = open_dir(u"index", mapped=False) searcher = index.searcher() @app.route("/search/skip=/",methods=["GET"]) @app.route("/search/",methods=["GET"]) def do_search(skip=0,term=None): query = QueryParser("content").parse(term) results = searcher.search(query, limit=skip+5) terms = [text for fieldname, text in query.all_terms() if fieldname == "content"] objects = [] for result in results[skip:skip+5]: title = result.get("title") path = result.get("path") # high = highlight.highlight(result.get("content"), # terms, # analysis.StandardAnalyzer(), # highlight.SimpleFragmenter(), # highlight.HtmlFormatter()) objects.append({ 'title' : title, 'path' : path, 'excerpt' : 'TODO' }) return flask.render_template('search.html', objects=objects, term=term, skip=skip) if __name__ == "__main__": app.debug = True app.run(host="0.0.0.0")