示例#1
0
文件: app.py 项目: suutari-ai/hayes
	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)
示例#2
0
文件: app.py 项目: suutari-ai/hayes
	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
示例#3
0
文件: app.py 项目: suutari-ai/hayes
    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
示例#4
0
	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
示例#5
0
 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
示例#6
0
文件: app.py 项目: suutari-ai/hayes
 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)
示例#7
0
	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)