(editors_picks)= # 홍보된 검색 결과 ```{eval-rst} .. module:: wagtail.contrib.search_promotions ``` `searchpromotions` 모듈은 "홍보된 검색 결과"를 관리하고 검색 결과 페이지에 표시하기 위한 모델 및 사용자 인터페이스를 제공합니다. "홍보된 검색 결과"를 통해 편집자는 관련 콘텐츠를 검색어에 명시적으로 연결할 수 있으므로 결과 페이지에는 검색 엔진의 결과 외에 선별된 콘텐츠가 포함될 수 있습니다. ## 설치 `searchpromotions` 모듈은 기본적으로 활성화되어 있지 않습니다. 설치하려면 프로젝트의 Django 설정 파일에 `INSTALLED_APPS` 에 `wagtail.contrib.search_promotions` 를 추가합니다. ```python INSTALLED_APPS = [ ... 'wagtail.contrib.search_promotions', ] ``` 이 앱에는 마이그레이션이 포함되어 있으므로 설치 후 `migrate` django-admin 명령을 실행해야 합니다. ## 사용법 설치되면 "설정" 메뉴에 "홍보된 검색 결과"라는 새 메뉴 항목이 나타나야 합니다. 여기에서 페이지를 인기 검색어에 할당할 수 있습니다. ### 검색 결과 페이지에 표시 특정 검색어에 대한 홍보된 검색 결과 목록을 검색하려면 `wagtailsearchpromotions_tags` 템플릿 태그 라이브러리의 `{% get_search_promotions %}` 템플릿 태그를 사용할 수 있습니다. ```html+django {% load wagtailcore_tags wagtailsearchpromotions_tags %} ... {% get_search_promotions search_query as search_promotions %} ``` ### 저장된 검색어 관리 `searchpromotions` 모듈은 `Query` 및 `QueryDailyHits` 모델을 통해 검색어 로그와 일일 조회수를 유지합니다. ```{eval-rst} .. class:: wagtail.contrib.search_promotions.models.Query .. method:: get(query_string) :classmethod: 저장된 검색어를 검색하거나 존재하지 않으면 새 검색어를 만듭니다. .. method:: add_hit(date=None) 새 레코드를 만들거나 기존 레코드의 조회수를 늘려 검색어에 대한 또 다른 일일 조회수를 기록합니다. 기본적으로 현재 날짜를 사용하지만 선택적 `date` 매개변수를 전달할 수 있습니다. ``` #### 예시 검색 뷰 다음은 검색어에 대한 조회수를 기록하는 검색 페이지에 대한 Django 뷰 예시입니다. ```python 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)= ### `searchpromotions_garbage_collect` ```sh ./manage.py searchpromotions_garbage_collect ``` 트래픽이 많은 웹사이트에서는 저장된 쿼리 및 일일 조회수 로그가 커질 수 있으며 오래된 레코드를 정리해야 할 수 있습니다. 이 명령은 1주일 이상 된 모든 검색어 로그를 정리합니다(또는 [`WAGTAILSEARCH_HITS_MAX_AGE`](wagtailsearch_hits_max_age) 설정을 통해 구성 가능한 일수).