Habeas

It's been another great semester, and what better way to finish off a great semester than to upload my favorite project from that semester. Habeas is a search engine that can handle .txt and .json files.

I had the pleasure of creating Habeas with 3 other classmates: Sotheanith "Nith" Sok, Yashua "Profe" Ovando, and Sella "K-Gram" Bae. Working as a part of this team was enriching beyond the possibility of overstatement. Each one of us brought something unique and indispensable to the project. Nith was the master of debugging. If one of us ever ran into a mysterious error, we could count on Nith to find it and come up with a solution. Nith's confidence, levity, and reassuring disposition complemented his extensive mastery of programming perfectly. Yashua was always coming in clutch for the team. Whenever the project was reaching a critical junction you could count on Yashua to see things through to the very end. Admirably, he managed to make his major contributions all while balancing his responsibilities as an algorithms instructor. Sella was our bulwark of best practice, our role-model of refactoring, our stickler for code structure, and our queen of clean commit history. Wherever Sella worked on the project, you could rest easy knowing that her code met the highest programming standards down to the minutest detail. While each of us brought different skills and temperaments to the table, the qualities that we had in common included sincere respect for each other and a desire to create a final product that went above and beyond the call of our specifications. These strengths together with my own made our group a clear stand-out amongst our classmates. Needless to say, it was a genuine gift to contribute to this team. After a trying semester of development, Habeas has grown into a fine reflection of the high pedigree of the team that created it.

To give Habeas a try, click the download button, unzip the Desktop.zip file, open the newly unzipped file, and then click on the application file "Habeas Setup 1.0.0.exe". That'll install Habeas onto your computer. From there, simply click on the Habeas desktop shortcut to start searching. Once you start running Habeas, it'll prompt you to select a local directory containing either .txt or .json files. After you've made your selection, Habeas will index that content. From there you'll be able to search your chosen directory for particular terms.

Habeas supports AND queries, OR queries, phrase queries, and near queries. Aside from performing queries, Habeas can also list the entire vocabulary of the content of the directory, stem terms, and even perform soundex searches — though currently soundex functionality is limited to the "author" field in .json files. At one point, Habeas also supported various wildcard queries and ranked retrieval queries: in the coming days we'll work to bring those features back into the final build. Working on Habeas was difficult and stressful at times but also fun. Once the team and I bring back the aforementioned features, we might work on optimizing those features or even include new features such as spelling correction.

Fun Fact Interlude: the project's name "Habeas" was inspired by two peculiar facts. The first fact was that search engine scientists apparently call the body of work to be searched over a "corpus" — plural: "corpora." The second fact was that the specifications for our project required the user to select a directory — or corpus — for the program to search over. With these two facts in mind, the team was able to make a multi-layered pun out of the Latin phrase "habeas corpus": produce the body. The idea is that, when the user opens Habeas they must "produce the body" — ie: corpus — of work for the program to search over. From there the program produces the results which the user was looking for.

Finally, as with BeachGames Chess, I have to thank Neal Terrell for all his excellent guidance on this project. Neal Terrell is a high-quality instructor and his term projects are always the highlights of my semester. If a CSULB computer science student happens to be reading this, I highly recommend taking Neal Terrell's classes. Neal's classes are hard but they're also incredibly gratifying.

With all that said, be sure to try Habeas and look out for future updates!
Happy searching!

Download