방화벽 뒤에서 작동하는 Docusaurus v2+ 에 대한 오프라인/로컬 검색입니다.
주요 기능:
참고: 검색창에는 오픈 소스 algolia/autocomplete 라이브러리를 사용합니다. 이 라이브러리는 단지 프런트엔드로 사용되며 기본 Docusaurus 검색 환경(algolia/docsearch)과 달리 Algolia 또는 타사 서버에 연결되지 않습니다 .
npm install @cmfcmf/docusaurus-search-local
또는
yarn add @cmfcmf/docusaurus-search-local
docusaurus.config.js
의 plugins
배열에 이 플러그인을 추가하세요.
module . exports = {
// ...
plugins : [ require . resolve ( "@cmfcmf/docusaurus-search-local" ) ] ,
// or, if you want to specify options:
// ...
plugins : [
[
require . resolve ( "@cmfcmf/docusaurus-search-local" ) ,
{
// Options here
} ,
] ,
] ,
} ;
다음 옵션을 사용할 수 있습니다(기본값은 아래에 표시됨).
{
// whether to index docs pages
indexDocs : true ,
// Whether to also index the titles of the parent categories in the sidebar of a doc page.
// 0 disables this feature.
// 1 indexes the direct parent category in the sidebar of a doc page
// 2 indexes up to two nested parent categories of a doc page
// 3...
//
// Do _not_ use Infinity, the value must be a JSON-serializable integer.
indexDocSidebarParentCategories : 0 ,
// Includes parent categories path in search result
includeParentCategoriesInPageTitle : false ,
// whether to index blog pages
indexBlog : true ,
// whether to index static pages
// /404.html is never indexed
indexPages : false ,
// language of your documentation, see next section
language : "en" ,
// setting this to "none" will prevent the default CSS to be included. The default CSS
// comes from autocomplete-theme-classic, which you can read more about here:
// https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-theme-classic/
// When you want to overwrite CSS variables defined by the default theme, make sure to suffix your
// overwrites with `!important`, because they might otherwise not be applied as expected. See the
// following comment for more information: https://github.com/cmfcmf/docusaurus-search-local/issues/107#issuecomment-1119831938.
style : undefined ,
// The maximum number of search results shown to the user. This does _not_ affect performance of
// searches, but simply does not display additional search results that have been found.
maxSearchResults : 8 ,
// lunr.js-specific settings
lunr : {
// When indexing your documents, their content is split into "tokens".
// Text entered into the search box is also tokenized.
// This setting configures the separator used to determine where to split the text into tokens.
// By default, it splits the text at whitespace and dashes.
//
// Note: Does not work for "ja" and "th" languages, since these use a different tokenizer.
tokenizerSeparator : / [s-]+ / ,
// https://lunrjs.com/guides/customising.html#similarity-tuning
//
// This parameter controls the importance given to the length of a document and its fields. This
// value must be between 0 and 1, and by default it has a value of 0.75. Reducing this value
// reduces the effect of different length documents on a term’s importance to that document.
b : 0.75 ,
// This controls how quickly the boost given by a common word reaches saturation. Increasing it
// will slow down the rate of saturation and lower values result in quicker saturation. The
// default value is 1.2. If the collection of documents being indexed have high occurrences
// of words that are not covered by a stop word filter, these words can quickly dominate any
// similarity calculation. In these cases, this value can be reduced to get more balanced results.
k1 : 1.2 ,
// By default, we rank pages where the search term appears in the title higher than pages where
// the search term appears in just the text. This is done by "boosting" title matches with a
// higher value than content matches. The concrete boosting behavior can be controlled by changing
// the following settings.
titleBoost : 5 ,
contentBoost : 1 ,
tagsBoost : 3 ,
parentCategoriesBoost : 2 , // Only used when indexDocSidebarParentCategories > 0
}
}
이제 검색창을 사용하여 문서를 검색할 수 있습니다.
중요: 검색은 정적으로 작성된 문서에 대해서만 작동합니다(즉, 문서 폴더에서 npm run docusaurus build
실행한 후).
개발 중에는 검색이 작동하지 않습니다(예: npm run docusaurus start
실행 시). 로컬에서 검색을 테스트하려면 먼저 npm run docusaurus build
사용하여 문서를 빌드한 다음 npm run docusaurus serve
통해 제공하세요.
문서가 영어로 작성되지 않은 경우 language
옵션을 사용하십시오. 단일 언어를 지정하거나 여러 언어의 배열을 지정할 수 있습니다. 다음 언어를 사용할 수 있습니다:
ar, da, de, en, es, fi, fr, hi, hu, it, ja, nl, no, pt, ro, ru, sv, th, tr, vi, zh
중요: 중국어 지원( zh
)을 위해서는 ^2.5.0 || ^3.0.0
에 nodejieba
npm 패키지도 설치해야 합니다. ^2.5.0 || ^3.0.0
.
공식 Docusaurus 문서 플러그인으로 작성된 문서 버전이 지원됩니다. 문서 페이지가 아닐 때(예: 블로그 게시물이나 정적 페이지를 볼 때) 검색 창은 기본적으로 최신 버전( next
가 아니라 versions.json
에 정의된 최신 버전)으로 설정됩니다. 사용자가 문서 페이지를 방문하면 해당 페이지에서 버전이 추출되고 검색에서는 해당 버전의 문서만 검색됩니다. 검색창 자리 표시자 텍스트는 항상 현재 감지된 문서 버전을 반영합니다.
이 플러그인은 기본적으로 Docusaurus i18n을 사용한 문서화를 지원합니다. codeTranslations 하위 폴더에 새 번역 파일을 생성하고 PR을 제출하여 추가 번역에 기여해 주세요.
cmfcmf/dsl로 시작하는 <yourfolder>/i18n/<locale>/code.json
의 번역을 수정하여 번역을 조정할 수도 있습니다 cmfcmf/dsl.
. 자세한 내용은 https://docusaurus.io/docs/i18n/tutorial#translate-json-files에서 확인하세요.
문서 작성 시 오류가 발생하는 경우 디버그 모드에서 문서를 작성하여 오류의 원인이 되는 페이지를 파악할 수 있습니다. 그렇게 하려면 문서를 작성할 때 DEBUG
환경 변수를 설정하기만 하면 됩니다: DEBUG=1 npm run docusaurus build
.
자세한 내용은 CONTRIBUTING.md 파일을 참조하세요.
MIT