Best Search Architechure for a conditional search
Posted on 2013-01-14
Hi - I'm exploring some options for a new search tool I'm building and would appreciate some advise on how to best architect it.
Here's the scenario:
- I've got a music search app with 30,000 searchable songs
- My existing search uses Solr (Lucene) to perform an indexed Keywords search against the stored keywords associated with each song.
Currently, users can enter search terms into a Keywords box, which searches the indexed songs keywords field. For example, a user could search: "happy, fun, upbeat". This works great, but I want to add another layer to the search that allows users to enter a band name to search. Where if the user searches "Pink Floyd" or "The Rolling Stones", it will recognize those as a band names, then grab the associated Band Description for said band, then pass it to the Solr search engine.
I'm using MySQL and am going to be importing a "band database" with around 50,000 band records, to use as my source data. I'll call that table BANDS, and give it the following 2 fields:
From the front-end user search, I want to check the users search term against BANDS.BandName.
If a match is found; get BANDS.BandDescription and pass that to my Solr indexed search
If a match is not found; just search the user search Keywords in the Solr indexed search
Please let me know if that makes sense. Speed is imperative to the success of my search, so I'm wondering if this 2-stop-search approach is the correct way to do this. I look forward to learning....