From c176c6adae89b7cf67b5ee75f478670024c9eed0 Mon Sep 17 00:00:00 2001 From: Pieter Vander Vennet Date: Sat, 14 Sep 2024 14:22:32 +0200 Subject: [PATCH] Search: layersearch now splits based on word, to detect single words which match --- src/Logic/Search/LayerSearch.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Logic/Search/LayerSearch.ts b/src/Logic/Search/LayerSearch.ts index f72ef7abba..b4a17a87d3 100644 --- a/src/Logic/Search/LayerSearch.ts +++ b/src/Logic/Search/LayerSearch.ts @@ -3,6 +3,7 @@ import SearchUtils from "./SearchUtils" import ThemeSearch from "./ThemeSearch" import LayerConfig from "../../Models/ThemeConfig/LayerConfig" import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig" +import { Utils } from "../../Utils" export default class LayerSearch { @@ -15,12 +16,13 @@ export default class LayerSearch { static scoreLayers(query: string, layerWhitelist?: Set): Record { const result: Record = {} + const queryParts = query.trim().split(" ").map(q => Utils.simplifyStringForSearch(q)) for (const id in ThemeSearch.officialThemes.layers) { if(layerWhitelist !== undefined && !layerWhitelist.has(id)){ continue } const keywords = ThemeSearch.officialThemes.layers[id] - const distance = SearchUtils.scoreKeywords(query, keywords) + const distance = Math.min(... queryParts.map(q => SearchUtils.scoreKeywords(q, keywords))) result[id] = distance } return result