Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Reverse query matching solr

I have a list of user queries to solr from a website (100's of thousands of them). My requirement is to return all the queries, in the given list, that are true for a document. I know I could index that one document and loop through the list of 100000 queries to see if the document is returned but is there any faster method?

eg. :

  1. cartype=BMW AND colour=RED
  2. cartype=FORD AND doors=4
  3. cartype=FORD AND colour=GREEN

    document: <cartype>FORD</cartype> <colour>GREEN</colour> <doors>4</doors>

So this document in question would return queries 2 & 3.

Ideally I would like to do some sort of reverse search. Index the search queries and send the contents of the document to return the matches. Anybody know how I might go about this or has it been tried before?

Any input put be greatly appreciated thanks.

like image 392
everreadyeddy Avatar asked Aug 31 '12 17:08

everreadyeddy


1 Answers

Can you consider switching to elasticsearch? Sorry but the usecase looks perfect for the Percolate API, a really useful feature that elasticsearch provides.

You would be indexing your queries instead of documents, giving them an unique id. Then you could send your documents one by one and get back which queries match on them, without even indexing the documents. Check it out!

like image 139
javanna Avatar answered Sep 28 '22 03:09

javanna