การค้นหา Docusaurus v2+ แบบออฟไลน์/ท้องถิ่นที่ทำงานหลังไฟร์วอลล์ของคุณ
จุดเด่นของคุณสมบัติ:
หมายเหตุ: เราใช้ไลบรารีโอเพ่นซอร์ส algolia/เติมข้อความอัตโนมัติสำหรับช่องค้นหา ไลบรารีนี้ถูกใช้เป็นส่วนหน้าเท่านั้น และแตกต่างจากประสบการณ์การค้นหา Docusaurus เริ่มต้น (algolia/docsearch) โดย ไม่ได้เชื่อมต่อกับเซิร์ฟเวอร์ Algolia หรือบุคคลที่สาม
npm install @cmfcmf/docusaurus-search-local
หรือ
yarn add @cmfcmf/docusaurus-search-local
เพิ่มปลั๊กอินนี้ลงในอาร์เรย์ plugins
ใน docusaurus.config.js
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
) คุณต้องติดตั้งแพ็คเกจ nodejieba
npm ที่ ^2.5.0 || ^3.0.0
รองรับเวอร์ชันเอกสารที่สร้างด้วยปลั๊กอินเอกสาร Docusaurus อย่างเป็นทางการ แถบค้นหามีค่าเริ่มต้นเป็นเวอร์ชันล่าสุด (ไม่ใช่ next
แต่เป็นเวอร์ชันล่าสุดที่กำหนดไว้ใน versions.json
) เมื่อไม่ได้อยู่ในหน้าเอกสารประกอบ (เช่น เมื่อดูโพสต์ในบล็อกหรือหน้าคงที่) หากผู้ใช้เยี่ยมชมหน้าเอกสารประกอบ เวอร์ชันจะถูกแยกออกจากหน้านั้น และการค้นหาจะค้นหาเฉพาะเอกสารประกอบของเวอร์ชันนั้นเท่านั้น ข้อความตัวยึดตำแหน่งแถบค้นหาจะแสดงเวอร์ชันเอกสารที่ตรวจพบในปัจจุบันเสมอ
ปลั๊กอินนี้รองรับเอกสารที่ใช้ Docusaurus i18n ทันที.. โปรดสนับสนุนการแปลเพิ่มเติมโดยการสร้างไฟล์การแปลใหม่ในโฟลเดอร์ย่อย codeTranslations และส่ง PR
คุณยังสามารถปรับการแปลได้โดยแก้ไขการแปลใน <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 สำหรับข้อมูลเพิ่มเติม
เอ็มไอที