검색
정적 사이트에는 질의에 응답할 서버가 없으므로 MediaWiki의 내장 검색은 내보내기에서 동작하지 않습니다. Wikven은 SifterSearch를 내장하여 기본적으로 활성화된 상태로 제공합니다. SifterSearch는 빌드 시점에 정적 검색 색인을 만들고 결과를 전적으로 브라우저에서 제공하므로, 모든 사이트가 별도 설정 없이 동작하는 검색을 갖추게 됩니다. 이 문서 사이트도 이것을 사용합니다.
동작 방식
SifterSearch는 Pagefind로 렌더링된 문서를 색인하고 정적 색인 번들을 빌드 출력에 씁니다. 각 문서에서 그 결과를 스킨 자체의 검색 상자에 넣어 줍니다. 스킨이 Codex 타입어헤드를 마운트한다면(Vector 2022와 MinervaNeue) 그쪽으로, 그렇지 않다면 코어의 고전적인 제안 상자로 갑니다. 어느 쪽이든 입력하는 동안 상자가 문서를 제안하고, 제안은 그것이 가리키는 문서로 이어지며, 뒤에 있는 무엇에도 요청을 보내지 않습니다. API도, 데이터베이스도, load.php도 없습니다.
스킨을 둘 이상 두고 빌드한 사이트는 스킨마다 한 벌씩 기록되며, 그 사본은 문서뿐 아니라 색인도 각자의 pagefind/ 아래에 함께 지닙니다. 그래서 결과는 독자가 이미 읽고 있던 사본 안의 문서이고, 고른 스킨은 검색을 거쳐도 그대로 남습니다.
설정하기
검색에는 설정이 필요 없습니다. 색인은 빌드 출력 아래의 pagefind/ 디렉터리에 쓰이고 /pagefind/에서 제공됩니다. 몇 가지 경우에만 이를 조정하며, 모두 .wikven.yaml에서 합니다.
사이트가 하위 디렉터리에 있다면 번들 경로에 그것을 포함하도록 설정합니다. 이 사이트는 GitHub Pages에서 /wikven 아래에 배포됩니다:
config:
SifterSearchBundlePath: /wikven/pagefind/
타입어헤드만이 아니라 한 문서에 모든 일치 항목을 나열하려면 콘텐츠 문서를 지정합니다(아래 참고):
config:
SifterSearchResultsPage: "Search"
검색을 끄려면 출력 디렉터리를 아무것도 없는 곳으로 지정합니다:
config:
SifterSearchOutputDir: ""
Codex 타입어헤드는 결과마다 섬네일 자리를 열로 남겨 두는데 Pagefind 결과에는 섬네일이 없으므로, 이를 마운트하는 스킨은 그러지 말라고 일러 주기 전까지 빈 열을 보여줍니다. 그런 스킨은 저마다 자기 설정을 읽고, 그 값을 기본값에 병합하지 않고 통째로 가져가므로, 블록을 스킨마다 온전히 다시 적어야 합니다. 그 안의 API 키도 스킨이 원래 쓰던 값 그대로 함께 적습니다. 이 사이트는 둘 다 설정합니다:
config:
VectorTypeahead:
apiUrl: null
recommendationApiUrl: null
options:
showThumbnail: false
showDescription: true
MinervaTypeahead:
apiUrl: null
recommendationApiUrl: null
options:
showThumbnail: false
showDescription: true
전체 결과 문서
스킨의 검색 상자는 입력하는 동안 상위 일치 항목을 보여줍니다. 모든 일치 항목을 나열하는 문서를 만들려면 (그 외에는 비어 있는) 콘텐츠 문서를 만들고 SifterSearchResultsPage에 그 이름을 지정합니다. SifterSearch는 거기에 전체 검색 UI를 마운트하고 URL에서 받은 질의를 실행하며, 검색 상자의 "…을(를) 포함하는 문서 찾기" 동작과 Enter 키가 그 문서로 이동합니다. 이 사이트는 Search라는 제목의 문서를 사용합니다.