dfay Posted April 15, 2017 Posted April 15, 2017 Please allow fuzzy search when "Alfred Filters Results" is turned on in a Script Filter. Thanks. pseudometa and deanishe 2
deanishe Posted April 16, 2017 Posted April 16, 2017 (edited) FWIW, I've been thinking about writing a command-line program that replaces "Alfred Filters Results" with a fuzzy algorithm. Probably the one I use in my Go library, which is based on Forrest Smith's algorithm plus diacritic folding. You'd use it like this: ./fuzzy --query "$1" /usr/bin/python myscript.py where the arguments are the command to run. It'd capture the JSON output by your script (and cache it for the session), filter the items against a keyword field (or title if that's missing), then pass the filtered JSON on to Alfred. What do you think? Edited April 16, 2017 by deanishe
dfay Posted April 16, 2017 Author Posted April 16, 2017 I'd always prefer something native for accessibility to newer users and speed, but that sounds like a good solution if Andrew isn't forthcoming...
deanishe Posted April 17, 2017 Posted April 17, 2017 (edited) If it's written in Swift/ObjC (which it would have to be, imo), the difference in speed wouldn't be particularly noticeable in most cases. The workflow would likely be the speed bottleneck in most cases (unless that's also written in a compiled language). Native would of course be better, but I don't know if Andrew would go for it. Fuzzy search is massively slower than Alfred's "word starts with" search, and Andrew is all about speed. On my machine, Alfred can easily handle ~50k items. My fuzzy search (in Go) can handle about a fifth of that. (In both cases, "handle" means "filter in well under a second".) Even if 10k results filtered in under a second sounds awesome fast, we're still talking about putting a toggle into Alfred that would make search 4-5X slower. Edited April 17, 2017 by deanishe
dfay Posted April 17, 2017 Author Posted April 17, 2017 Hmm. I think that would still be a lot faster than many script filters that pull results off the net. On reflection, I think the approach you describe is quite good b/c it would require next to no modification of existing workflows.
deanishe Posted April 17, 2017 Posted April 17, 2017 Going by the workflows I've written in Go, I think it would be perceptibly, but insignificantly, slower than "Alfred Filters Results" in most cases (i.e. not thousands and thousands or results). And yeah, the main thing would be that it's super-easy to add to your workflow. The top-level variables Andrew recently added to the feedback are essentially "session" variables, so I can use those to run the workflow once and cache the results only as long as the user is using the workflow (like Alfred does). That's the key to making is simple to add.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now