def search(request): if not flag_is_active(request, 'elasticsearch'): """Google Custom Search results page.""" query = request.GET.get('q', '') return render(request, 'landing/searchresults.html', {'query': query}) """Performs search or displays the search form.""" search_query = request.GET.get('q', None) page = int(request.GET.get('page', 1)) # Pagination if page < 1: page = 1 page_count = 10 start = page_count * (page - 1) end = start + page_count results = DocumentType.search() if search_query: results = (results.query(or_={'title': search_query, 'content': search_query}) .highlight('content')) result_count = results.count() results = results[start:end] return render(request, 'search/results.html', {'results': results, 'search_query': search_query, 'result_count': result_count, 'prev_page': page - 1 if start > 0 else None, 'next_page': page + 1 if end < result_count else None})
def search(request): if not flag_is_active(request, "elasticsearch"): """Google Custom Search results page.""" query = request.GET.get("q", "") return render(request, "landing/searchresults.html", {"query": query}) """Performs search or displays the search form.""" search_query = request.GET.get("q", None) page = int(request.GET.get("page", 1)) # Pagination if page < 1: page = 1 page_count = 10 start = page_count * (page - 1) end = start + page_count results = DocumentType.search() if search_query: results = results.query(or_={"title": search_query, "content": search_query}).highlight("content") result_count = results.count() results = results[start:end] return render( request, "search/results.html", { "results": results, "search_query": search_query, "result_count": result_count, "prev_page": page - 1 if start > 0 else None, "next_page": page + 1 if end < result_count else None, }, )
def search(request): if not flag_is_active(request, 'elasticsearch'): """Google Custom Search results page.""" query = request.GET.get('q', '') return render(request, 'landing/searchresults.html', {'query': query}) """Performs search or displays the search form.""" search_query = request.GET.get('q', None) page = int(request.GET.get('page', 1)) # Pagination if page < 1: page = 1 page_count = 10 start = page_count * (page - 1) end = start + page_count results = DocumentType.search() if search_query: results = (results.query(or_={ 'title__text': search_query, 'content__text': search_query }).filter(locale=request.locale).highlight('content')) result_count = results.count() results = results[start:end] return render( request, 'search/results.html', { 'results': results, 'search_query': search_query, 'result_count': result_count, 'prev_page': page - 1 if start > 0 else None, 'next_page': page + 1 if end < result_count else None })
def search(request): if not flag_is_active(request, 'elasticsearch'): """Google Custom Search results page.""" query = request.GET.get('q', '') return render(request, 'landing/searchresults.html', {'query': query}) """Performs search or displays the search form.""" search_query = request.GET.get('q', None) page = int(request.GET.get('page', 1)) # Pagination if page < 1: page = 1 page_count = 10 start = page_count * (page - 1) end = start + page_count results = DocumentType.search() if search_query: query_fields = ['title', 'content', 'summary'] or_dict = {} for field in query_fields: or_dict[field + '__text'] = search_query results = (results.query(or_=or_dict) .filter(locale=request.locale) .highlight(*DocumentType.excerpt_fields)) result_count = results.count() results = results[start:end] return render(request, 'search/results.html', {'results': results, 'search_query': search_query, 'result_count': result_count, 'prev_page': page - 1 if start > 0 else None, 'next_page': page + 1 if end < result_count else None})
def test_get_excerpt_strips_html(self): self.refresh() results = (DocumentType.search().query(content__match='audio') .highlight('content')) ok_(results.count() > 0) for doc in results: excerpt = doc.get_excerpt() ok_('audio' in excerpt) ok_('<strong>' not in excerpt) results = (DocumentType.search().query(or_={'title': 'lorem', 'content': 'lorem'}) .highlight('content')) ok_(results.count() > 0) for doc in results: excerpt = doc.get_excerpt() eq_('', excerpt)
def test_current_locale_results(self): self.refresh() results = (DocumentType.search().query(or_={ 'title': 'article', 'content': 'article' }).filter(locale='en-US').highlight('content')) for doc in results: eq_('en-US', doc.locale)
def test_current_locale_results(self): self.refresh() results = (DocumentType.search().query(or_={'title': 'article', 'content': 'article'}) .filter(locale='en-US') .highlight('content')) for doc in results: eq_('en-US', doc.locale)
def test_get_excerpt_strips_html(self): self.refresh() results = (DocumentType.search().query( content__match='audio').highlight('content')) ok_(results.count() > 0) for doc in results: excerpt = doc.get_excerpt() ok_('audio' in excerpt) ok_('<strong>' not in excerpt) results = (DocumentType.search().query(or_={ 'title': 'lorem', 'content': 'lorem' }).highlight('content')) ok_(results.count() > 0) for doc in results: excerpt = doc.get_excerpt() eq_('', excerpt)
def test_get_excerpt_uses_summary(self): self.refresh() results = (DocumentType.search().query( content__match='audio').highlight('content')) ok_(results.count() > 0) for doc in results: excerpt = doc.get_excerpt() ok_('the word for tough things' in excerpt) ok_('extra content' not in excerpt)
def test_get_excerpt_uses_summary(self): self.refresh() results = (DocumentType.search().query(content__match='audio') .highlight('content')) ok_(results.count() > 0) for doc in results: excerpt = doc.get_excerpt() ok_('the word for tough things' in excerpt) ok_('extra content' not in excerpt)
def test_get_excerpt_without_highlight_match(self): self.refresh() results = (DocumentType.search().query(or_={'title': 'lorem', 'content': 'lorem'}) .highlight('content')) ok_(results.count() > 0) for doc in results: excerpt = doc.get_excerpt() eq_('audio is in this but the word for tough things' ' will be ignored' , excerpt)
def test_get_excerpt_without_highlight_match(self): self.refresh() results = (DocumentType.search().query(or_={ 'title': 'lorem', 'content': 'lorem' }).highlight('content')) ok_(results.count() > 0) for doc in results: excerpt = doc.get_excerpt() eq_( 'audio is in this but the word for tough things' ' will be ignored', excerpt)
def search(request): if not flag_is_active(request, 'elasticsearch'): """Google Custom Search results page.""" query = request.GET.get('q', '') return render(request, 'landing/searchresults.html', {'query': query}) """Performs search or displays the search form.""" search_query = request.GET.get('q', None) page = int(request.GET.get('page', 1)) # Pagination if page < 1: page = 1 page_count = 10 start = page_count * (page - 1) end = start + page_count results = DocumentType.search() if search_query: query_fields = ['title', 'content', 'summary'] or_dict = {} for field in query_fields: or_dict[field + '__text'] = search_query results = (results.query(or_=or_dict).filter( locale=request.locale).highlight(*DocumentType.excerpt_fields)) result_count = results.count() results = results[start:end] template = 'results.html' if flag_is_active(request, 'redesign'): template = 'results-redesign.html' return render( request, 'search/%s' % template, { 'results': results, 'search_query': search_query, 'result_count': result_count, 'current_page': page, 'prev_page': page - 1 if start > 0 else None, 'next_page': page + 1 if end < result_count else None })
def reindex_documents(): for id in DocumentType.get_indexable(): DocumentType.index(DocumentType.extract_document(id), id)
def search(request, page_count=10): """Performs search or displays the search form.""" # Google Custom Search results page if not flag_is_active(request, 'elasticsearch'): query = request.GET.get('q', '') return render(request, 'landing/searchresults.html', {'query': query}) search_form = SearchForm(request.GET or None) context = { 'search_form': search_form, 'current_page': 1, } if search_form.is_valid(): search_query = search_form.cleaned_data.get('q', None) or_dict = {} for field in ['title', 'content', 'summary']: or_dict[field + '__text'] = search_query results = (DocumentType.search().query(or_=or_dict).filter( locale=request.locale).highlight( *DocumentType.excerpt_fields).facet('tags')) filtered_topics = search_form.cleaned_data.get('topic', []) if filtered_topics: results = results.filter(tags=filtered_topics) result_count = results.count() # Pagination current_page = search_form.cleaned_data['page'] start = page_count * (current_page - 1) end = start + page_count results = results[start:end] url = URLObject(request.get_full_path()) # {u'tags': [{u'count': 1, u'term': u'html'}]} # then we go through the returned facets and match the items with # the allowed filters facet_counts = [] topic_choices = search_form.topic_choices() for result_facet in results.facet_counts().get('tags', []): allowed_filter = topic_choices.get(result_facet['term'], None) if allowed_filter is None: continue select_url = merge_param(url, 'topic', result_facet['term']) select_url = pop_param(select_url, 'page', str(current_page)) facet_updates = { 'label': allowed_filter, 'select_url': select_url, } if result_facet['term'] in url.query.multi_dict.get('topic', []): deselect_url = pop_param(url, 'topic', result_facet['term']) deselect_url = pop_param(deselect_url, 'page', str(current_page)) result_facet['deselect_url'] = deselect_url facet_counts.append(dict(result_facet, **facet_updates)) context.update({ 'results': results, 'search_query': search_query, 'result_count': result_count, 'facet_counts': facet_counts, 'current_page': current_page, 'prev_page': current_page - 1 if start > 0 else None, 'next_page': current_page + 1 if end < result_count else None, }) else: search_query = '' result_count = 0 template = 'results.html' if flag_is_active(request, 'redesign'): template = 'results-redesign.html' return render(request, 'search/%s' % template, context)
def search(request, page_count=10): """Performs search or displays the search form.""" # Google Custom Search results page if not flag_is_active(request, 'elasticsearch'): query = request.GET.get('q', '') return render(request, 'landing/searchresults.html', {'query': query}) search_form = SearchForm(request.GET or None) context = { 'search_form': search_form, 'current_page': 1, } if search_form.is_valid(): search_query = search_form.cleaned_data.get('q', None) or_dict = {} for field in ['title', 'content', 'summary']: or_dict[field + '__text'] = search_query results = (DocumentType.search() .query(or_=or_dict) .filter(locale=request.locale) .highlight(*DocumentType.excerpt_fields) .facet('tags')) filtered_topics = search_form.cleaned_data.get('topic', []) if filtered_topics: results = results.filter(tags=filtered_topics) result_count = results.count() # Pagination current_page = search_form.cleaned_data['page'] start = page_count * (current_page - 1) end = start + page_count results = results[start:end] url = URLObject(request.get_full_path()) # {u'tags': [{u'count': 1, u'term': u'html'}]} # then we go through the returned facets and match the items with # the allowed filters facet_counts = [] topic_choices = search_form.topic_choices() for result_facet in results.facet_counts().get('tags', []): allowed_filter = topic_choices.get(result_facet['term'], None) if allowed_filter is None: continue select_url = merge_param(url, 'topic', result_facet['term']) select_url = pop_param(select_url, 'page', str(current_page)) facet_updates = { 'label': allowed_filter, 'select_url': select_url, } if result_facet['term'] in url.query.multi_dict.get('topic', []): deselect_url = pop_param(url, 'topic', result_facet['term']) deselect_url = pop_param(deselect_url, 'page', str(current_page)) result_facet['deselect_url'] = deselect_url facet_counts.append(dict(result_facet, **facet_updates)) context.update({ 'results': results, 'search_query': search_query, 'result_count': result_count, 'facet_counts': facet_counts, 'current_page': current_page, 'start_index': start + 1, 'end_index': start + len(results), 'prev_page': current_page - 1 if start > 0 else None, 'next_page': current_page + 1 if end < result_count else None, }) else: search_query = '' result_count = 0 template = 'results.html' if flag_is_active(request, 'redesign'): template = 'results-redesign.html' return render(request, 'search/%s' % template, context)