From 2f2f358ea2366bf47fc56133f7c068bdf6ee631a Mon Sep 17 00:00:00 2001 From: Alexandra Date: Thu, 22 May 2025 17:00:48 -0600 Subject: [PATCH] change best match to be less word order dependent. dedupe repeat terms --- lib/metadataworker.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/metadataworker.js b/lib/metadataworker.js index 1cdee90..ddd3102 100644 --- a/lib/metadataworker.js +++ b/lib/metadataworker.js @@ -63,7 +63,7 @@ function buildOrAndClauses(field, op, queries) { let orClauses = []; for (let x in queries) { - let name = queries[x].split(" "); + let name = [...new Set(queries[x].split(" "))]; //dedupe; let andClauses = []; for (let y in name) { andClauses.push(where(field, op, name[y], WhereFlags.CONTAINS)); @@ -86,23 +86,23 @@ function getBestMatch(filename, data) { let bestMatchCount = 0; let lengthDifference = 0; for (let x in data) { - let dataWords = data[x].name.split(" "); let matchingWords = 0; for (let y in words) { - if (y >= dataWords.length) break; - if (words[y] == dataWords[y]) matchingWords++; + if (data[x].name.toLowerCase().includes(words[y].toLowerCase())) + matchingWords++; } let diff = matchingWords - dataWords.length; if (matchingWords > bestMatchCount && diff < lengthDifference) { bestIndex = x; bestMatchCount = matchingWords; - lengthDifference = diff + lengthDifference = diff; + if (lengthDifference < 0) lengthDifference = 0; } } - if(bestIndex != null){ - return data[bestIndex] + if (bestIndex != null) { + return data[bestIndex]; } - return + return; } let games = await getMetadata([