Indextank east bay ruby meetup slides


Published on

  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Indextank east bay ruby meetup slides

  1. 1. Finding anything: Real-time search with IndexTank Tim Spence April 19, 2011
  2. 2. About the PresenterTim Spence● Senior Infrastructure Engineer at MedHelp ( )● Former .NET developer● Recently converted to Ruby● In love with Open Source Software● More at
  3. 3. Agenda● State of search today● Quick survey: how much time/effort did YOU spend implementing search on your webapp?● Examples of services that need improved search● IndexTank to the rescue● Case study:
  4. 4. Agenda, continued● How I found out about IndexTank● Two apps I built with IndexTank● Live Demo
  5. 5. The State of Search Today● Not well implemented at all – Search works, but... – Barely● How many pages of results do you typically browse through before finding what you were looking for?● Or do you give up and head for google site search instead?
  6. 6. Survey Time!● How much time/effort did YOU spend implementing search on your webapp?● How many times have you iterated on your search feature?● When was the last time someone thanked you for building a powerful, reliable search feature for your webapp?
  7. 7. My Opinion● Search as an in-app feature is an afterthought● Minimal implementation is the norm● If it wasnt for MySQL/MS-SQL full text indexing, most apps probably wouldnt even have a search feature● Most good web apps dont make it easy for users to find specific content outside of predetermined navigation
  8. 8. Lets pick on some apps!● These are companies with great products, but their search comes up short● Dont worry–they can take it!
  9. 9. App #1: Github
  10. 10. App #1: Github
  11. 11. App #1: Github● Interface is decent – Search repos, code, users, or everything – Search by language● However... – Cant do much with results but browse – Check out this example
  12. 12. App #1: Github
  13. 13. App #1: Github● Why these results arent so hot – Cant search by most recently maintained – Cant search by most popular (most watched) – Are you ready to browse 1,297 results?● Advanced search capabilities exist, but not the best interface – recency/popularity implemented, but require specific arguments
  14. 14. App #2: Amazon Web Services● ”Hey, I bet I can find an AMI from the community for the exact EC2 setup I need”● Fact: probably not
  15. 15. App #2: Amazon Web Services
  16. 16. App #2: Amazon Web Services● Notice something missing? – No search – Only sort by date, title● Ready to browse 934 results? – Id rather build my own AMI● Incredible missed opportunity – o/s search – Stack search – etc...
  17. 17. Fact: Github & Amazon arent the only ones● Lots of good web services● Massive quantities of quality content● Unfortunately not discoverable in meaningful ways
  18. 18. Interlude: Sites with great search● Foodspotting – Proximity – Recency – Rating● Medhelp – Content category – Promoted content● Other sites I overlooked? Whose search do you like?
  19. 19. What was the point of that last slide?● Search can be useful if it is valued as a feature● Any company willing to invest in the resources can build and host a high quality search engine● However, must you roll your own?
  20. 20. Enter Search as a Service● No need for you to invest in additional infrastructure● No need to reinvent the wheel – Search is a solved problem – Let the experts refine it
  21. 21. IndexTank to the rescue!● Hosted–no load on your infrastructure● Powerful – Well get into the details next● Always Improving – Search IS their product● Freemium● Easy to implement
  22. 22. Lets talk features● Real-time search – Real-time indexing–results immediately available● Custom scoring● Autocomplete● Faceting● Geo search● Advanced text search
  23. 23. ●Real-time search● Real-time indexing – results immediately available● Index multiple docs/sec● Overwrite existing docs as you wish – Changes also immediately available
  24. 24. Custom Scoring● Implementer has full control over how results are returned● Choose which fields are searched● Use pre-written scoring functions● Or write your own
  25. 25. Custom Scoring
  26. 26. Everyone loves autocomplete● Saves users time● Potentially avoids spelling errors – Not for hunters/peckers● Adds a degree of intelligence to the search process
  27. 27. Faceting● Does it make sense for you to categorize documents in your index? – In all cases, YES● Consider your advanced users and the narrow results they seek – Dont make anyone sift through irrelevant results
  28. 28. Faceting
  29. 29. Geo● Its 2011 – Location is more relevant than ever before – Mobile is skyrocketing–every client has a GPS● IndexTank has built-in geo proximity search capability
  30. 30. Geo
  31. 31. Advanced Text Search (Beta)● Fuzzy search (Did you mean...?)● Stemming – Alternate word forms (tense, possession, etc...)● Alternate spellings – Misspellings
  32. 32. Other Benefits● Zero maintenance● Scalability included for free● Easy implementation – Clients available in many languages – Excellent documentation–Lets check it out● Excellent support – Humans or bots? You decide● Dog food: their site search is done well
  33. 33. Case Study:● High traffic news aggregator (> 1.0E9 pvs/mo) with tons of content● Who remembers how bad reddits search was? – When it even worked● Cant blame them for trying – Many attempts, but none worked● IndexTank excelled in all areas● Lets check it out now
  34. 34. My experience with IndexTank● Discovered through Heroku/IndexTank contest● Built my first irl Rails app in an afternoon/evening w/ fellow hacker Chris Saylor (@cwsaylor)● Didnt win the contest but learned how easy it is to quickly create highly targeted search
  35. 35. App #1: Toxosis● Searchable database of toxic release data supplied by U.S. E.P.A.● Hosted at● Search enabled on many fields including city/state/zip, toxin● Additional fields can be added to index – When I have time, of course...
  36. 36. More personal backstory● Still in the business of reinventing myself as a Rails developer● How to get a Rails gig? Develop an app multiple Rails apps and show it them off● Opportunities are everywhere–contests, hackathons, and weekend hacks for developer community
  37. 37. App #2: SXSWdex● Searchable database of 2011 SXSW attendees● Hosted at● Design goal: do a better job than SXSW official site● Search within bio, company, location, name● Facets: company, city/state
  38. 38. The moment weve all been waiting for● Lets build an app!
  39. 39. Questions?● Q&A time with an IndexTank engineer