matches = {
const tokens = prefix.split(" ").filter((s) => s != "");
let prefixMatches = new Set();
let perTokenMatches = [];
for (const [i, t] of tokens.entries()) {
if (edgeNgramIndex.has(t)) {
const matches = edgeNgramIndex.get(t);
const matchedDocs = new Set([...matches].map((x) => data[x[0]]));
perTokenMatches.push([t, matches]);
if (i == 0) {
prefixMatches = matchedDocs;
} else {
prefixMatches = prefixMatches.intersection(matchedDocs);
}
} else {
prefixMatches = new Set();
break;
}
}
return [prefixMatches, perTokenMatches];
}