-
-
Notifications
You must be signed in to change notification settings - Fork 460
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore(docs): revert removal of custom search scoring (#2019)
Signed-off-by: Lala Sabathil <aiko@aitsys.dev> Co-authored-by: Lala Sabathil <lala@pycord.dev> Co-authored-by: plun1331 <49261529+plun1331@users.noreply.github.com>
- Loading branch information
1 parent
eb4fd12
commit f5e780a
Showing
2 changed files
with
83 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
"use-strict"; | ||
|
||
let queryBeingDone = null; | ||
let pattern = null; | ||
|
||
const escapedRegex = /[-\/\\^$*+?.()|[\]{}]/g; | ||
function escapeRegex(e) { | ||
return e.replace(escapedRegex, "\\$&"); | ||
} | ||
|
||
// for some reason Sphinx shows some entries twice | ||
// if something has been scored already I'd rather sort it to the bottom | ||
const beenScored = new Set(); | ||
|
||
function __score(haystack, regex) { | ||
let match = regex.exec(haystack); | ||
if (match == null) { | ||
return Number.MAX_VALUE; | ||
} | ||
let subLength = match[0].length; | ||
let start = match.index; | ||
return (subLength * 1000 + start) / 1000.0; | ||
} | ||
|
||
// unused for now | ||
function __cleanNamespaces(query) { | ||
return query.replace(/(discord\.(ext\.)?)?(.+)/, "$3"); | ||
} | ||
|
||
Scorer = { | ||
// Implement the following function to further tweak the score for each result | ||
// The function takes a result array [filename, title, anchor, descr, score] | ||
// and returns the new score. | ||
score: (result) => { | ||
// only inflate the score of things that are actual API reference things | ||
const [, title, , , score] = result; | ||
|
||
if (pattern !== null && title.startsWith("discord.")) { | ||
let _score = __score(title, pattern); | ||
if (_score === Number.MAX_VALUE) { | ||
return score; | ||
} | ||
if (beenScored.has(title)) { | ||
return 0; | ||
} | ||
beenScored.add(title); | ||
let newScore = 100 + queryBeingDone.length - _score; | ||
// console.log(`${title}: ${score} -> ${newScore} (${_score})`); | ||
return newScore; | ||
} | ||
return score; | ||
}, | ||
|
||
// query matches the full name of an object | ||
objNameMatch: 15, | ||
// or matches in the last dotted part of the object name | ||
objPartialMatch: 11, | ||
// Additive scores depending on the priority of the object | ||
objPrio: { | ||
0: 15, // used to be importantResults | ||
1: 7, // used to be objectResults | ||
2: -5, // used to be unimportantResults | ||
}, | ||
// Used when the priority is not in the mapping. | ||
objPrioDefault: 0, | ||
|
||
// query found in title | ||
title: 15, | ||
partialTitle: 7, | ||
// query found in terms | ||
term: 5, | ||
partialTerm: 2, | ||
}; | ||
|
||
document.addEventListener("DOMContentLoaded", () => { | ||
const params = new URLSearchParams(window.location.search); | ||
queryBeingDone = params.get("q"); | ||
if (queryBeingDone) { | ||
let pattern = Array.from(queryBeingDone).map(escapeRegex).join(".*?"); | ||
pattern = new RegExp(pattern, "i"); | ||
} | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters