change best match to be less word order dependent. dedupe repeat terms

This commit is contained in:
Alexandra
2025-05-22 17:00:48 -06:00
parent 99a370fdea
commit 2f2f358ea2

View File

@@ -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([