summaryrefslogtreecommitdiff
path: root/web.py
diff options
context:
space:
mode:
Diffstat (limited to 'web.py')
-rw-r--r--web.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/web.py b/web.py
new file mode 100644
index 0000000..429c516
--- /dev/null
+++ b/web.py
@@ -0,0 +1,40 @@
+#!/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=<int:skip>/<path:term>",methods=["GET"])
+@app.route("/search/<path:term>",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")