Oh Ferret, how awesome are you? For those who don't know,
Ferret is a
Lucene port in Ruby which, speed-wise, gives Lucene a run for it's money. More than that, it also has integration with memcached which, if it weren't running on a shared instance I would sooo be all over that. SnipSnipe isn't quite that popular yet, so I have a little time before worrying about dedicated hosting :)
Anyway, thanks to Ferret,
SnipSnipe now has searchability. Actually, I like Ferret so much, I'm considering replacing
acts_as_taggable entirely with
acts_as_ferret. The benefit here is two fold: one, it reduces model complexity, which currently looks something like this (seriously):
class Code < ActiveRecord::Base
acts_as_taggable
acts_as_voteable
acts_as_commentable
acts_as_favorite
acts_as_ferret
end
More importantly, two, it increases the flexibility of searches. I like the idea of giving the model semantic metadata, which I already do somewhat (tags pull double-duty as a desciptor of the snippet as well as specifies how the code is to be highlighted - code tagged 'xml' will be highlighted differently than code tagged 'java' - it currently won't let you choose both). I'd like to be able to choose multiple tags, like "maven", "java", "plugin" and let the system drill down for me. Currently you can only sort by one snippet at a time.
Back to the new feature. First, notice the search bar in the upper right:

When you perform a search, it does what you'd expect. It searches matching terms in the snippet title, description, tags, or the code itself. Naturally this search is bookmarkable - as one would expect.

The second new feature is favorites. If you are logged in, you will notice a heart icon when hovering over a snippet. Clicking it will add that to your favorites list.

Later, if you click on the FAVORITES menu item you'll get a list of snippets you've marked. You can actually share your favorites list with other people. Clicking on "my"...

...will direct you to the page that others would see.

Favorites lists are normally searchable, so you have to specifically give the url to someone. This may change in the future.
Also, someone (thanks John) noticed that the old Firefox plugin no longer works, since I altered/simplified the URLs. Please update to version 0.6
Any other comments/suggestions are welcome.
I'll later post on my progress using Ferret as a replacement for taggable, as well as how I'm fixing pagination.