From 2b0ac8db17bee1e6f48a5a25680a73b3bb6ee144 Mon Sep 17 00:00:00 2001 From: Thomas Coopman Date: Tue, 16 Aug 2022 10:47:47 +0200 Subject: [PATCH] fix for #1588 --- assets/js/search-page.js | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/assets/js/search-page.js b/assets/js/search-page.js index b4b12abe4..3871ff0a0 100644 --- a/assets/js/search-page.js +++ b/assets/js/search-page.js @@ -83,13 +83,16 @@ function indexStorageKey () { return `index:${getProjectNameAndVersion()}` } -function createIndex () { +export function createIndex () { + lunr.QueryLexer.termSeparator = /\s+/ return lunr(function () { + this.tokenizer.separator = /\s+/ this.ref('ref') this.field('title', { boost: 3 }) this.field('doc') this.metadataWhitelist = ['position'] this.pipeline.remove(lunr.stopWordFilter) + this.use(hyphenSearchPipeline) this.use(elixirTokenSplitter) this.pipeline.remove(lunr.trimmer) this.use(elixirTrimmer) @@ -100,6 +103,28 @@ function createIndex () { }) } +function hyphenSearchPipeline (builder) { + var pipelineFunction = function (token) { + var tokenStr = token.toString() + if (tokenStr.indexOf('-') < 0) return token + + let tokens = [] + + tokens.push( + token.clone(function (s) { + return s.replace('-', '') + }) + ) + + tokens.push(token) + return tokens + } + + lunr.Pipeline.registerFunction(pipelineFunction, 'customPipeline') + builder.pipeline.before(lunr.stemmer, pipelineFunction) + builder.searchPipeline.before(lunr.stemmer, pipelineFunction) +} + function elixirTokenSplitter (builder) { registerElixirTokenFunction() builder.pipeline.before(lunr.stemmer, elixirTokenFunction)