Show HN: I created a search engine to quickly find things in my source code (github.com)
I like to reuse code I've already written. But with so many projects over the many years, it's sometimes hard to remember which project I did a given thing in or even what the parameters of a rarely used Win32 API function are. I needed something that could easily find what I needed without the slowness of a recursive grep (especially since my projects can span many different locations in the filesystems and even many different computers/OSes) or the increasing difficulty in getting what you want from search engines on the internet.
This search engine implements TF-IDF and BM25 algorithms. It has both C TUI programs and a web interface via a node.js server which accesses the daemons. It's written for Windows and Linux. The user can use whatever flow they want - one-shot query vs. daemon (client/server), commandline tools vs web interface, secure vs. non-secure, etc. This project also serves as (IMHO) a rather good example of all sorts of things such as socket programming, OpenSSL programming, node.js programming, JSON processing, etc.
4 comments
[ 0.20 ms ] story [ 15.5 ms ] threadSo far I do not see any licensing terms, the source file headers only state the copyright notice. Do you have any plans about that?
> I came up with the idea while waking up from a nap and then was so blinded by how great this feature would be to have.
This has happened to me many times. In my case I forget how my program works fron all the approaches I have tried while writing it, then get excited to try a great idea which then does not work because it relies on some feature from one of the alternatives that I rejected for some other reason.
I will indeed waste a few hours trying the PDF indexing idea, there has to be some way to make it work. I have done some feeble attempts in this direction by myself before using the C library pdfio which would work also on Windows. I will probably crash again on that wall but if the code search works as described I will still use this program every day.
In regards to your story of essentially the path not taken: in general when I create a version that either doesn't work or doesn't work as well as I wanted, I keep the file around (renamed usually). Sometimes, much later I figure out how to make it work or some part of it becomes the basis of another project. Unless I didn't spend much time on it, I don't like to waste effort. The PDF addition was kind of an example of that - I kept the file around, but then when I was prettifying things up to upload to github, I figured I would add the PDF code to my file and put it within #ifdef's in case someone would want it. And also, in case you haven't noticed, I provided many different versions of the search system - it's harder to maintain, but allows the user to pick the option they like the most. So, in your case, you never know if the paths not taken might someday be paths you will want to go down.
I'll check out pdfio, it looks interesting.
I am preparing a pull request adding the Apache license in case it is acceptable for you.