Hi Markus, Thanks again. I wish this were simple boolean algebra. This is something I have already tried. So either I am missing the boat completely, or have failed to communicate it clearly. I didn't want to confuse the issue further but maybe the following excerpts will help...
Excerpt from "Solr 1.4 Enterprise Search Server" by David Smiley & Eric Pugh... "...the criteria for this hypothetical search involves multi-valued fields, where the index of one matching criteria needs to correspond to the same value in another multi-valued field in the same index. You can't do that..." And this excerpt is from "Solr and RDBMS: The basics of designing your application for the best of both" by by Amit Nithianandan... "...If I wanted to allow my users to search for wiper blades available in a store nearby, I might create an index with multiple documents or records for the same exact wiper blade, each document having different location data (lat/long, address, etc.) to represent an individual store. Solr has a de-duplication component to help show unique documents in case that particular wiper blade is available in multiple stores near me..." http://www.lucidimagination.com/Community/Hear-from-the-Experts/Articles/Solr-and-RDBMS-design-basics Remember, with my original schema definition I have multi-valued fields, and when the "product" document is built, these fields do contain an array of values retrieved from each of the related skus. Skus are children of my products. Using your example data, which t-shirt sku is available for purchase as a child of t-shirt product with id 3? Is it really the green, M, or have we found a product document related to both a green t-shirt and a Medium t-shirt of some other color, which will thereby leave the user with nothing to purchase? sku = 9 [color=green, size=L, price=10.99], product id = 3 sku = 10 [color=blue, size=S, price=9.99], product id = 3 sku = 11 [color=blue, size=M, price=10.99], product id = 3 >> id = 1 >> color = [green, blue] >> size = [M, S] >> price = 6 >> >> id = 2 >> color = [red, blue] >> size = [L, S] >> price = 12 >> >> id = 3 >> color = [green, red, blue] >> size = [L, S, M] >> price = 5 If this is still unclear, I'll post a new question based on findings from this conversation. Thanks for all of your help. -Kelly Markus Jelsma - Buyways B.V. wrote: > > Hello Kelly, > > > Simple boolean algebra, you tell Solr you want color = green AND size = M > so it will only return green t-shirts in size M. If you, however, turn the > AND in a OR it will return all t-shirts that are green OR in size M, thus > you can then get M sized shirts in the blue color or green shirts in size > XXL. > > I suggest you'd just give it a try and perhaps come back later to find > some improvements for your query. It would also be a good idea - if i may > say so - to read the links provided in the earlier message. > > Hope you will find what you're looking for :) > > > Cheers, > > Kelly Taylor zei: >> >> Hi Markus, >> >> Thanks for your reply. >> >> Using the current schema and query like you suggest, how can I identify >> the unique combination of options and price for a given SKU? I don't >> want the user to arrive at a product which doesn't completely satisfy >> their search request. For example, with the "color:Green", "size:M", >> and "price:[0 to 9.99]" search refinements applied, no products should >> be displayed which only have "size:M" in "color:Blue" >> >> The actual data in the database for a product to display on the frontend >> could be as follows: >> >> product id = 1 >> product name = T-shirt >> >> related skus... >> -- sku id = 7 [color=green, size=S, price=10.99] >> -- sku id = 9 [color=green, size=L, price=10.99] >> -- sku id = 10 [color=blue, size=S, price=9.99] >> -- sku id = 11 [color=blue, size=M, price=10.99] >> -- sku id = 12 [color=blue, size=L, price=10.99] >> >> Regards, >> Kelly >> >> >> Markus Jelsma - Buyways B.V. wrote: >>> >>> Hello Kelly, >>> >>> >>> I am not entirely sure if i understand your problem correctly. But i >>> believe your first approach is the right one. >>> >>> Your question: "Which products are available that contain skus with >>> color Green, size M, and a price of $9.99 or less?" can be easily >>> answered using a schema like yours. >>> >>> id = 1 >>> color = [green, blue] >>> size = [M, S] >>> price = 6 >>> >>> id = 2 >>> color = [red, blue] >>> size = [L, S] >>> price = 12 >>> >>> id = 3 >>> color = [green, red, blue] >>> size = [L, S, M] >>> price = 5 >>> >>> Using the data above you can answer your question using a basic Solr >>> query [1] like the following: q=color:green AND price:[0 TO 9,99] AND >>> size:M >>> >>> Of course, you would make this a function query [2] but this, if i >>> understood your question well enough, answers it. >>> >>> [1] http://wiki.apache.org/solr/SolrQuerySyntax >>> [2] http://wiki.apache.org/solr/FunctionQuery >>> >>> >>> Cheers, >>> >>> >> >> -- >> View this message in context: >> http://old.nabble.com/Encountering-a-roadblock-with-my-Solr-schema-design...use-dedupe--tp27118977p27120031.html >> Sent from the Solr - User mailing list archive at Nabble.com. > > > > > -- View this message in context: http://old.nabble.com/Encountering-a-roadblock-with-my-Solr-schema-design...use-dedupe--tp27118977p27120734.html Sent from the Solr - User mailing list archive at Nabble.com.