How can I limit the number of results returned by an expensive filter expression in AppleScript?

Solution 1:

Thus, my question is whether there’s a way for me to get "at most 5 results" in a single query?

No, it cannot be done in a single query.

If you want to loop through a given count downwards then the following example AppleScript code is how I'd do it:

set maxNumber to 5
set searchString to "a"

set matches to missing value
repeat with i from maxNumber to 1 by -1
    if matches is equal to missing value then
        try
            tell application "Notes"
                set matches to id of ¬
                    (notes 1 thru i in default account ¬
                        whose name contains searchString)
            end tell
        end try
        if matches is not equal to missing value then exit repeat
    end if
end repeat

return matches