From 6178d0000036d9dee63639a420aa510504216345 Mon Sep 17 00:00:00 2001 From: Martin Fischer Date: Thu, 21 Jul 2022 12:43:04 +0200 Subject: improve search results by requiring word boundary E.g. searching for "sport" should not yield proposals about transport. --- script.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'script.js') diff --git a/script.js b/script.js index 1301379..35aa43e 100644 --- a/script.js +++ b/script.js @@ -21,10 +21,15 @@ function normalize(str) { return str.toLowerCase().replaceAll('_', ' ') } +function escapeForRegex(str) { + return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') +} + function display(proposals) { const params = {}; if (nameInput.value) { - proposals = proposals.filter(p => normalize(p.name || p.page_title).includes(normalize(nameInput.value))); + const regex = new RegExp('\\b' + escapeForRegex(normalize(nameInput.value))); + proposals = proposals.filter(p => regex.test(normalize(p.name || p.page_title))); params.q = nameInput.value; } -- cgit v1.2.3