computer science

Giggle is a search and browsing web-based interface for a subset of the MEDLINE database. It was a class project back in 2005. I worked on it together with my friend Alex Stevenson, who, as far as I’m concerned, has fallen off the face of the Earth.

Project Description
Giggle was implemented in MUMPS, C, JavaScript and HTML. The indexing was done mostly by using existing code provided in the lecture notes. The system used data from several generated matrices (term-term, doc-term, etc…), a stop list, the Medline text file and more…

This was my first (and only) experience with MUMPS, so there was much learning along the way - that caused some ugly design decisions, and yet, as my professor observed, “surprisingly, it worked.”

Giggle provided a rich search and browsing experience. It included the following:

  • a standard search interface with a soundex feature (converting words that sound like one another into common codes: “did you mean ‘xyz’?”);
  • a document view page which highlighted the query terms, converted other terms in the document to links to further queries and a ranked list of related documents;
  • a browsing page with a list of terms, expanding in some cases to related terms combinations;
  • a dynamic clustering feature that took the top 100 results and generated clusters, identifying most common terms for each cluster;
  • a search history page which displayed a list of past searches and a list of viewed documents - both implemented as lists of links.

The best part of it was - it was all on one web page. There were 5 tile-shaped links (like on amazon.com) which, when clicked, displayed alternative views of the data. The data in the hidden views was preserved across the session. No, we didn’t store anything on the server - that would be prohibitive in a real-world application. The state management model was borrowed from .NET - the entire html page was treated as a form with the persistent data being passed through a hidden form field. Click events were managed with JavaScript which dynamically changed the values of 2 other hidden fields, setting the action and the target of the event. Now that I think of it, the concept was elementary, I have no idea why nobody had thought of it before asp.net.

Screenshots

giggle1s.gif giggle2s.gif giggle3s.gif giggle4s.gif giggle5s.gif

Hairy Code
Here’s the hairy code for the entire project (zip, 788KB). There are two huge files missing – data.dat and key.dat (that’s where the data is stored) - the system won’t run without them. Feel free to use the code if you like.

Related Stuff

 
contact me
blog
research
about