fix: Increase the search result limit for FlexSearch to provide more accurate suggestions.

This commit is contained in:
newtextdoc1111
2025-07-23 11:12:23 +09:00
parent 6c29336435
commit bf7823e985
2 changed files with 16 additions and 9 deletions
+8 -3
View File
@@ -77,10 +77,15 @@ Embedding: my_embedding,0,1000,
let tagEncoder, cjkEncoder;
let document;
let performSearch = function (query, limit = null) {
const results = document.search(query, { field: ["tag", "alias"], limit: limit, suggest: false });
let performSearch = function (query, limit = 100) {
const results = document.search(query, {
field: ["tag", "alias"],
limit: limit,
suggest: false,
merge: true,
});
const ids = results.map(r => r.result).flat();
const ids = results.map(r => r.id);
return mockTags.filter(tag => ids.includes(tag.id)).map(tag => tag.tag);
}
+8 -6
View File
@@ -109,16 +109,17 @@ function searchCompletionCandidates(textareaElement) {
// Use fast search if enabled and available for the source
if (settingValues.useFastSearch && autoCompleteData[source].flexSearchDocument) {
// Use the FlexSearch Document to search
let result = autoCompleteData[source].flexSearchDocument.search(partialTag, {
// NOTE: The limit param is reflected separately for "tag" and "alias".
let searchResults = autoCompleteData[source].flexSearchDocument.search(partialTag, {
field: ["tag", "alias"],
limit: settingValues.maxSuggestions,
limit: Math.min(settingValues.maxSuggestions * 10, 500),
merge: true,
suggest: false,
cache: true,
});
// Sort results based on exact matches or tag count
result = result
// Sort and limit results based on exact matches and counts
const result = searchResults
.map(r => autoCompleteData[source].sortedTags[r.id])
.sort((aTag, bTag) => {
if (matchWord(bTag.tag, queryVariations).isExactMatch) {
@@ -134,12 +135,13 @@ function searchCompletionCandidates(textareaElement) {
return -999999999999;
}
return bTag.count - aTag.count;
});
})
.slice(0, Math.min(searchResults.length, settingValues.maxSuggestions));
if (settingValues._logprocessingTime) {
const endTime = performance.now();
const duration = endTime - startTime;
console.debug(`[Autocomplete-Plus] Fast Search for "${partialTag}" in ${source} took ${duration.toFixed(2)}ms. Found ${result.length} candidates.`);
console.debug(`[Autocomplete-Plus] Fast Search for "${partialTag}" in ${source} took ${duration.toFixed(2)}ms.Found ${result.length} candidates within ${searchResults.length} searches from flexsearch.`);
}
return result;