fuzzysort icon indicating copy to clipboard operation
fuzzysort copied to clipboard

Improve support for small typos

Open offsky opened this issue 1 year ago • 4 comments

Would it be possible to improve the fuzzy search algorithm so it can handle simple typos? Here is an example:

Screenshot 2024-10-17 at 11 09 47 AM

If you have perfect spelling as above you get a good match (69%) and the highlight captures the entire phrase. However, if you transpose the last two letters of the search string, the score drops to 25% and ranks below a result that has shorter matches. Also, the highlight is no longer showing as much as it could. The search string has swapped the last two letters, but the highlight has now dropped the last 10 letters. I was expecting the highlight to at least contain "turn any list into an animat" since this is an exact match. I could understand if the word "animated" gets dropped from the highlight, but why is the prior word "an" being dropped as well?

Screenshot 2024-10-17 at 11 10 07 AM

Here is a more extreme example, the "x" at the end of the search string is causing the entire result to be omitted, even though the first 5 words of the search appear perfectly in the result. The misspelled word in the search poisons the entire query.

Screenshot 2024-10-17 at 11 18 06 AM

offsky avatar Oct 17 '24 18:10 offsky

Would it be possible to improve the fuzzy search algorithm so it can handle simple typos?

no.

early versions used to handle a single transpose like in your 2nd example and return a normal score of 69%, but this caused more problems than it solved. lots of issues asking why things were a match and it was because of this.

i can't think of a simple/fast way to deal with typos that doesn't cause other issues.

if you care about typos you should use a different search library like fuse.js, which often returns nonsense results, probably a direct consequence of supporting typos

farzher avatar Oct 19 '24 03:10 farzher

shameless plug for https://github.com/leeoniya/uFuzzy

leeoniya avatar Oct 20 '24 18:10 leeoniya

@offsky did you try uFuzzy? did it work for you? what's your review? lol

farzher avatar Dec 29 '24 18:12 farzher

Fuzzysort solves 90% of my needs so I've been sticking with it for now. It would be nice to support small spelling errors, but for my needs it isn't critical and I ran out of time to test uFuzzy.

offsky avatar Jan 06 '25 18:01 offsky