diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 00be7dcc8..ffe470a24 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -183,6 +183,78 @@ async function createConfig() { darkTheme: darkCodeTheme, }, }), + + plugins: [ + [ + require.resolve("@cmfcmf/docusaurus-search-local"), + { + // 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, + + // whether to index blog pages + indexBlog: false, + + // 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 + } + }, + ] + ] } }; diff --git a/docs/package.json b/docs/package.json index 4f027b90b..388fe36ff 100644 --- a/docs/package.json +++ b/docs/package.json @@ -14,6 +14,7 @@ "write-heading-ids": "docusaurus write-heading-ids" }, "dependencies": { + "@cmfcmf/docusaurus-search-local": "^0.11.0", "@docusaurus/core": "2.0.1", "@docusaurus/preset-classic": "2.0.1", "@mdx-js/react": "^1.6.22",