I need to provide a custom sort option for sorting by price and I would like 
some suggestions.  It's not the straightforward "just sort by a price field in 
the document" scenario or I wouldn't be asking for help.  Here's the scenario 
I'm dealing with.

I have 100 million+ documents (so multi-sharded).  Users search for documents 
they are interested in using a standard keyword search.  They then purchase 
documents they are interested in.  So far, nothing hard.

Here's where things get "interesting".  The documents come from multiple 
suppliers.  Each supplier sets a price for his documents and different 
suppliers will provide different pricing.

That wouldn't be difficult except that *users* are divided up into different 
groups and depending on which group they are in, the supplier will charge the 
user a different price.  So, user A may pay one price for a document and user B 
may pay a different price for the same document just because user A and user B 
are in different groups.  I don't even know if the relative order or pricing is 
the same between different groups (e.g., if document X is more expensive than 
document Y for a user in group M, it may not be more expensive for a user in 
group N).  The one thing that may make this doable is that supplier A will 
likely have the same price for all of his documents for each of the user 
groups.  So, a user in group A will pay the same price regardless of which 
document he buys from supplier 1.  A user in group B will also pay the same 
price for any document from supplier 1; it's just that a user in group B will 
likely pay a different price than a user in group A.  So, within a supplier, 
the price varies based on user group, not the document.

To summarize, one of the requirements for the system is that we provide the 
ability to sort search results based on price.  This would be easy except that 
the price a user pays not only depends on what he wants to buy, but on what 
group the he is in.

I suspect there is some kind of custom solr module I'm going to have to write.  
I'm thinking that the user group gets passed in as a custom solr parameter (I'm 
assuming that's possible??).  Then I'm thinking that there has to be some kind 
of in memory database that tracks pricing based on user group and document 
supplier).

I'm happy to go read code, documents, links, etc if someone can point me in the 
right direction.  What kind of solr module am I likely going to write (extend) 
and are there some examples somewhere?  Maybe there's a way to do this without 
having to extend a solr module??

Hope this makes sense.  Any help is appreciated.

Scott


Reply via email to