Skip to content

Commit d511d55

Browse files
authored
Handling snake case terms in search results (#1182)
1 parent fe07082 commit d511d55

File tree

5 files changed

+20
-4
lines changed

5 files changed

+20
-4
lines changed

assets/js/search.js

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,21 +122,37 @@ function titleExtractor (document) {
122122

123123
if (type === 'function' || type === 'callback' || type === 'type') {
124124
var modFun = title.replace(/\/\d+/, '')
125-
var modOrFun = modFun.replace('.', ' ')
125+
var modOrFun = modFun.replace(/\./g, ' ')
126126
var parts = title.split('.')
127127
title = title + ' ' + modFun + ' ' + modOrFun + ' ' + parts[parts.length - 1]
128128
}
129129

130130
return title
131131
}
132132

133+
function snakeCaseSplitter (builder) {
134+
function snakeCaseFunction (token) {
135+
var snakeTokens = token.toString().split("_").map(function (str) {
136+
return token.clone().update(function () { return str })
137+
})
138+
if (snakeTokens.length > 1) {
139+
snakeTokens.push(token)
140+
}
141+
return snakeTokens
142+
}
143+
144+
lunr.Pipeline.registerFunction(snakeCaseFunction, 'snakeCaseSplitter')
145+
builder.pipeline.before(lunr.stemmer, snakeCaseFunction)
146+
}
147+
133148
function createIndex () {
134149
return lunr(function () {
135150
this.ref('ref')
136151
this.field('title', {boost: 3, extractor: titleExtractor})
137152
this.field('doc')
138153
this.metadataWhitelist = ['position']
139154
this.pipeline.remove(lunr.stopWordFilter)
155+
this.use(snakeCaseSplitter)
140156

141157
searchNodes.forEach(function (doc) {
142158
this.add(doc)

formatters/epub/dist/app-55d870bb4ec26b7e0a4d.js

Lines changed: 0 additions & 1 deletion
This file was deleted.

formatters/epub/dist/app-68d4672fcc635d8d3973.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

formatters/html/dist/app-c4b289bad2b1075574ff.js renamed to formatters/html/dist/app-6d292a6e9abe779a21f3.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)