Question

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.

Was it helpful?

Solution

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!

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top