def get(self, request, *args, **kwargs): complete = request.GET.get("complete") if complete: page_index = get_index_by_name("pages") result = get_connection().completion_suggest(page_index, complete, fuzzy=2) return HttpResponse(content=json.dumps(result.options), content_type="application/json") return super(SearchView, self).get(request, *args, **kwargs)
def get_context_data(self, **kwargs): context = super(SearchView, self).get_context_data(**kwargs) context["form"] = form = SearchForm(data=self.request.GET if self.request.GET else None) if form.is_bound and form.is_valid(): conn = get_connection() query_string = (form.cleaned_data["q"] or "").strip() if query_string: if form.cleaned_data.get("use_match_query"): query = MatchQuery("_all", query_string) else: query = QueryStringQuery("*" + query_string + "*") else: query = MatchAllQuery() if form.cleaned_data["only_people"]: min_h = form.cleaned_data.get("person_height_min") max_h = form.cleaned_data.get("person_height_max") if min_h is not None or max_h is not None: rq = RangeQuery() rq.add_range("height", gte=min_h, lte=max_h) query = BoolQuery(must=[query, rq]) context["results"] = conn.search(Search( query=query, filter=PrefixFilter(_type="people"), fields=["name", "street", "height"] )) else: context["results"] = conn.search(Search(query, highlight=("abstract",))) return context
def get_context_data(self, **kwargs): context = super(SearchView, self).get_context_data(**kwargs) context["form"] = form = SearchForm( data=self.request.GET if self.request.GET else None) if form.is_bound and form.is_valid(): conn = get_connection() query_string = (form.cleaned_data["q"] or "").strip() if query_string: if form.cleaned_data.get("use_match_query"): query = MatchQuery("_all", query_string) else: query = QueryStringQuery("*" + query_string + "*") else: query = MatchAllQuery() if form.cleaned_data["only_people"]: min_h = form.cleaned_data.get("person_height_min") max_h = form.cleaned_data.get("person_height_max") if min_h is not None or max_h is not None: rq = RangeQuery() rq.add_range("height", gte=min_h, lte=max_h) query = BoolQuery(must=[query, rq]) context["results"] = conn.search( Search(query=query, filter=PrefixFilter(_type="people"), fields=["name", "street", "height"])) else: context["results"] = conn.search( Search(query, highlight=("abstract", ))) return context
def handle(self, *args, **options): conn = get_connection() index = get_index_by_name("pages") wg = WordGatherer(conn, "word-suggest") wg.reset() wg.update(index, ("abstract", "title"), tokenizer=smart_finnish_tokenizer) for x in wg.search("juna"): print x
def handle(self, *args, **options): conn = get_connection() for index in get_configured_indexes(): print "Working on index", index.name conn.rebuild_index(index) conn.index_objects(index, index.get_objects(), bulk_size=300)