홍보된 검색 결과¶
searchpromotions 모듈은 “홍보된 검색 결과”를 관리하고 검색 결과 페이지에 표시하기 위한 모델 및 사용자 인터페이스를 제공합니다.
“홍보된 검색 결과”를 통해 편집자는 관련 콘텐츠를 검색어에 명시적으로 연결할 수 있으므로 결과 페이지에는 검색 엔진의 결과 외에 선별된 콘텐츠가 포함될 수 있습니다.
설치¶
searchpromotions 모듈은 기본적으로 활성화되어 있지 않습니다. 설치하려면 프로젝트의 Django 설정 파일에 INSTALLED_APPS 에 wagtail.contrib.search_promotions 를 추가합니다.
INSTALLED_APPS = [
...
'wagtail.contrib.search_promotions',
]
이 앱에는 마이그레이션이 포함되어 있으므로 설치 후 migrate django-admin 명령을 실행해야 합니다.
사용법¶
설치되면 “설정” 메뉴에 “홍보된 검색 결과”라는 새 메뉴 항목이 나타나야 합니다. 여기에서 페이지를 인기 검색어에 할당할 수 있습니다.
검색 결과 페이지에 표시¶
특정 검색어에 대한 홍보된 검색 결과 목록을 검색하려면 wagtailsearchpromotions_tags 템플릿 태그 라이브러리의 {% get_search_promotions %} 템플릿 태그를 사용할 수 있습니다.
{% load wagtailcore_tags wagtailsearchpromotions_tags %}
...
{% get_search_promotions search_query as search_promotions %}
<ul>
{% for search_promotion in search_promotions %}
{% if search_promotion.page %}
<li>
<a href="{% pageurl search_promotion.page %}">
<h2>{{ search_promotion.page.title }}</h2>
<p>{{ search_promotion.description }}</p>
</a>
</li>
{% else %}
<li>
<a href="{{ search_promotion.external_link_url }}">
<h2>{{ search_promotion.external_link_text }}</h2>
<p>{{ search_promotion.description }}</p>
</a>
</li>
{% endif %}
{% endfor %}
</ul>
저장된 검색어 관리¶
searchpromotions 모듈은 Query 및 QueryDailyHits 모델을 통해 검색어 로그와 일일 조회수를 유지합니다.
- class wagtail.contrib.search_promotions.models.Query¶
- classmethod get(query_string)¶
저장된 검색어를 검색하거나 존재하지 않으면 새 검색어를 만듭니다.
- add_hit(date=None)¶
새 레코드를 만들거나 기존 레코드의 조회수를 늘려 검색어에 대한 또 다른 일일 조회수를 기록합니다. 기본적으로 현재 날짜를 사용하지만 선택적 date 매개변수를 전달할 수 있습니다.
예시 검색 뷰¶
다음은 검색어에 대한 조회수를 기록하는 검색 페이지에 대한 Django 뷰 예시입니다.
from django.template.response import TemplateResponse
from wagtail.models import Page
from wagtail.contrib.search_promotions.models import Query
def search(request):
search_query = request.GET.get("query", None)
if search_query:
search_results = Page.objects.live().search(search_query)
query = Query.get(search_query)
# 조회수 기록
query.add_hit()
else:
search_results = Page.objects.none()
return TemplateResponse(
request,
"search/search.html",
{
"search_query": search_query,
"search_results": search_results,
},
)
관리 명령¶
searchpromotions_garbage_collect¶
./manage.py searchpromotions_garbage_collect
트래픽이 많은 웹사이트에서는 저장된 쿼리 및 일일 조회수 로그가 커질 수 있으며 오래된 레코드를 정리해야 할 수 있습니다. 이 명령은 1주일 이상 된 모든 검색어 로그를 정리합니다(또는 WAGTAILSEARCH_HITS_MAX_AGE 설정을 통해 구성 가능한 일수).