Enhancement: Implement Better Search Algorithm
Feature Request
The search algorithm which is used to search in Flow Launcher doesnt feel right. I mean, sure, regex is very powerful, but, regex is really complicated for me, and i am sure, it is for others, so i would infact like to use another better search algorithm.
SOLUTION
I need a search algorithm which implements fuzzy search, which i hope would be easier for the devs and also might be good enough. Fuzzy search is probably better for us users, as like, PowerToys Run uses! which basically gives us a "Plug-n-Play" experience, Making PowerToys Run or CommandPallete, the absolute BEST "out-of-the-box", NO CUSTOMIZATION REQUIRED, thing. which is probably good for them, but flow needs customization, i truly understand that.
As a user of FOSS, I know that there might be challenges, so I prefer fuzzy finding algorithms. The best thing you guys can do is, taking the code (ofc giving the credit as well) from other Open Source Projects, which would be much easier as the implementation would take time, but atleast you won't have to build the entire thing.
ALTERNATIVES
Like i have seen with the latest Windows 11 Insider Beta build 26120.3863 (See image below), Microsoft introduced Latent Semantic Indexing or LSI for Windows 11 Settings search in the search bar. Link to the article. As far as what I can search, this is used in SEO which made me think, if you guys can implement THIS or not, but i think this might be too much time-taking.
Additional info
I know this might sound similar to #3433 But this is the solution to that bug, or enhancement.
If you guys can mark this post in the #2926 Top ranked feature requests, it would be really appreciated.
Here are images for The blogpost:
Yes, I am planning this with technology of LLM, etc. But it is hard to implement and it can be our long-term plan.
What about Fuzzy Search? seems pretty easy with Python?
Yes, I am planning this with technology of LLM, etc. But it is hard to implement and it can be our long-term plan.
The "LLM"'s are only needed when using "LSI" but not "Fuzzy Search", Before the age of AI-drama, fuzzy finding was already implemented in a lot lots of programs. So I do think that you guys could ship something with like a fuzzy finding-regex matching algorithm, which could genuinely help in searching.
I do infact like the PowerToys Run's Search method, as its super fast, well, ofc its microsoft who's optimizing the program to run on Windows, but super fast doesnt need to be prioritized, as flow is as fast as possible. Which brings me to the actual point, that is its searching algorithm which is way, way too advanced to understand for me, but i do think that it optimizes on the things you search, but the best thing is it uses fuzzy search, NOT LSI. And fuzzy search should be well optimized for a program like Flow Launcher as its searching, Files, Programs, The Web, and more. It's a "Launcher" which probably shouldve had this.
And woah, Wox 2.0.0 just dropped? and wait, it says, "AI-ready commands" and whatever the f*ck i don't care,
Guys, don't go to the AI-dumb shit side, just focus on fixing the bugs, and like implementing very nice features like fuzzy finding in Flow Launcher.
I will probably make a beta plugin for you guys, which makes fuzzy finding, a feature in flow. I don't still know proper python, i know how to code, i'll probably do some vibe-coding, and also verify it before making the plugin. Don't worry, it will be safe.
Even Wox has learning-based searching algorithm, which for me, is pretty insane, i would really REALLY like to have that feature, properly implemented
#328 is one of the reasons related to this, i would like to add a "keep fresh" label to this issue
In #328 jjw24 talks about fuzzy search?? When was it even implemented?
We have already implemented the fuzzy search algorithm: https://github.com/Flow-Launcher/Flow.Launcher/blob/dev/Flow.Launcher.Infrastructure/StringMatcher.cs.
But we still get plenty of issues about the enhancement. So it needs improvement.
Oh got it, it needs improvement. What about the search score? the search score thing seems very, very bad at predicting in what programs it should search. I like every aspect of Flow launcher, but the programs plugin is so glitchy and its searching algorithm is 🤮
@Jack251970 Does Flow Launcher learn from the searching?
Oh got it, it needs improvement. What about the search score? the search score thing seems very, very bad at predicting in what programs it should search. I like every aspect of Flow launcher, but the programs plugin is so glitchy and its searching algorithm is 🤮
Yes, our team still has significant work ahead to improve search scoring.
Yeah, i'll try and improve the search score algorithm by making a plugin and trying to do the perfecting
Hey, Jack, I'm ready to start working on the fuzzy search improvements 😄
But Some questions
Should I focus on building a new, separate plugin that provides its own fuzzy search logic, maybe triggered by a specific keyword like fs ? This could offer an immediate, improved alternative experience. Or, would it be more valuable for me to dive directly into the main Flow Launcher C# codebase to try and debug and fix the existing fuzzy search implementation?
I'm open to either path! Knowing which approach you think is best will help me code using ai (ofcourse as i'm weak in C# but i know what makes sense, but i don't know where to start with, so I'll continuously try to teach myself along the way) effectively. If it's option 2 (the core code), any pointers on which files or modules handle the current fuzzy search would be incredibly helpful to get me started.
Hey, Jack, I'm ready to start working on the fuzzy search improvements 😄
But Some questions
Should I focus on building a new, separate plugin that provides its own fuzzy search logic, maybe triggered by a specific keyword like fs ? This could offer an immediate, improved alternative experience. Or, would it be more valuable for me to dive directly into the main Flow Launcher C# codebase to try and debug and fix the existing fuzzy search implementation?
I'm open to either path! Knowing which approach you think is best will help me code using ai (ofcourse as i'm weak in C# but i know what makes sense, but i don't know where to start with, so I'll continuously try to teach myself along the way) effectively. If it's option 2 (the core code), any pointers on which files or modules handle the current fuzzy search would be incredibly helpful to get me started.
Thanks for your consideration!
I think it could be better if you edit from FL side. You just need to check this class: https://github.com/Flow-Launcher/Flow.Launcher/blob/dev/Flow.Launcher.Infrastructure/StringMatcher.cs and bring better fuzzy search algorithm because it can bring improved better fuzzy search as API function for all plugins.
Here is one PR for your reference: https://github.com/Flow-Launcher/Flow.Launcher/pull/616.
This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 60 days.\n\nAlternatively this issue can be kept open by adding one of the following labels:\nkeep-fresh