Implement search algorithm

This should allow you to get non-exact matches and it should order your results in some semblance of an order. However, It's really simple minded. I also haven't had the chance to test these methods against a seeded database. But I should be free tomorrow night if you want to do some tests before you merge.