(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) 설정을 통해 구성 가능한 일수).