almost there
[wolnelektury.git] / apps / search / views.py
index dc90841..ff831f0 100644 (file)
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 
 from django.shortcuts import render_to_response, get_object_or_404
 from django.template import RequestContext
 
 from django.shortcuts import render_to_response, get_object_or_404
 from django.template import RequestContext
@@ -19,7 +20,7 @@ dictionary = enchant.Dict('pl_PL')
 
 def did_you_mean(query, tokens):
     change = {}
 
 def did_you_mean(query, tokens):
     change = {}
-    
+    # sprawdzić, czy słowo nie jest aby autorem - proste szukanie termu w author!
     for t in tokens:
         print("%s ok? %s, sug: %s" %(t, dictionary.check(t), dictionary.suggest(t)))
         if not dictionary.check(t):
     for t in tokens:
         print("%s ok? %s, sug: %s" %(t, dictionary.check(t), dictionary.suggest(t)))
         if not dictionary.check(t):
@@ -47,12 +48,27 @@ def category_name(category):
 def hint(request):
     prefix = request.GET.get('term', '')
     if len(prefix) < 2:
 def hint(request):
     prefix = request.GET.get('term', '')
     if len(prefix) < 2:
-        return JSONResponse(dumps({}))
+        return JSONResponse(dumps(None))
     JVM.attachCurrentThread()
     s = MultiSearch()
     JVM.attachCurrentThread()
     s = MultiSearch()
+
+    hint = s.hint()
+    try:
+        tags = request.GET.get('tags', '')
+        hint.tags(Tag.get_tag_list(tags))
+    except:
+        pass
+
+    # tagi beda ograniczac tutaj
+    # ale tagi moga byc na ksiazce i na fragmentach
+    # jezeli tagi dot tylko ksiazki, to wazne zeby te nowe byly w tej samej ksiazce
+    # jesli zas dotycza themes, to wazne, zeby byly w tym samym fragmencie.
+
     tags = s.hint_tags(prefix)
     books = s.hint_books(prefix)
 
     tags = s.hint_tags(prefix)
     books = s.hint_books(prefix)
 
+    # TODO DODAC TU HINTY
+
     return JSONResponse(
         [{'label': t.name,
           'category': category_name(t.category),
     return JSONResponse(
         [{'label': t.name,
           'category': category_name(t.category),
@@ -66,6 +82,18 @@ def hint(request):
             for b in books])
 
 
             for b in books])
 
 
+def foo(s, q, tag_list=None):
+    hint = s.hint()
+    try:
+        tag_list = Tag.get_tag_list(tag_list)
+        hint.tags(tag_list)
+    except:
+        tag_list = None
+
+    q = StringReader(q)
+    return (q, hint)
+
+
 def main(request):
     results = {}
     JVM.attachCurrentThread()  # where to put this?
 def main(request):
     results = {}
     JVM.attachCurrentThread()  # where to put this?
@@ -77,12 +105,13 @@ def main(request):
 
     if 'q' in request.GET:
         tags = request.GET.get('tags', '')
 
     if 'q' in request.GET:
         tags = request.GET.get('tags', '')
+        hint = srch.hint()
         try:
             tag_list = Tag.get_tag_list(tags)
         except:
             tag_list = []
 
         try:
             tag_list = Tag.get_tag_list(tags)
         except:
             tag_list = []
 
-            #        tag_filter = srch.
+        hint.tags(tag_list)
 
         query = request.GET['q']
         toks = StringReader(query)
 
         query = request.GET['q']
         toks = StringReader(query)
@@ -90,17 +119,16 @@ def main(request):
         if fuzzy:
             fuzzy = 0.7
 
         if fuzzy:
             fuzzy = 0.7
 
-
-        results = SearchResult.aggregate(srch.search_perfect_book(toks, fuzzy=fuzzy),
-                                         srch.search_perfect_parts(toks, fuzzy=fuzzy),
-                                         srch.search_everywhere(toks, fuzzy=fuzzy))
+        results = SearchResult.aggregate(srch.search_perfect_book(toks, fuzzy=fuzzy, hint=hint),
+                                         srch.search_perfect_parts(toks, fuzzy=fuzzy, hint=hint),
+                                         srch.search_everywhere(toks, fuzzy=fuzzy, hint=hint))
         results.sort(reverse=True)
 
         for r in results:
         results.sort(reverse=True)
 
         for r in results:
-            print r.parts
+            print r.hits
 
     return render_to_response('newsearch/search.html', {'results': results,
 
     return render_to_response('newsearch/search.html', {'results': results,
-                                                        'did_you_mean': (query is not None) and 
+                                                        'did_you_mean': (query is not None) and
                                                         did_you_mean(query, srch.get_tokens(query, field='SIMPLE')),
                                                         'fuzzy': fuzzy},
                               context_instance=RequestContext(request))
                                                         did_you_mean(query, srch.get_tokens(query, field='SIMPLE')),
                                                         'fuzzy': fuzzy},
                               context_instance=RequestContext(request))