On 5 June 2011 14:42, Erick Erickson <erickerick...@gmail.com> wrote:
> See: http://wiki.apache.org/solr/SchemaXml > > By adding ' "multiValued="true" ' to the field, you can add > the same field multiple times in a doc, something like > > <add> > <doc> > <field name="mv">value1</field> > <field name="mv">value2</field> > </doc> > </add> > > I can't see how that would work as one would need to associate the right start / end dates and price. As I understand using multivalued and thus flattening the discounts would result in: { "name":"The Book", "price":"$9.99", "price":"$3.00", "price":"$4.00", "synopsis":"thanksgiving special", "starts":"11-24-2011", "starts":"10-10-2011", "ends":"11-25-2011", "ends":"10-11-2011", "synopsis":"Canadian thanksgiving special", }, How does one differentiate the different offers? > But there's no real ability in Solr to store "sub documents", > so you'd have to get creative in how you encoded the discounts... > This is what I'm asking :) What is the best / recommended / known patterns for doing this? > > But I suspect a better approach would be to store each discount as > a separate document. If you're in the trunk version, you could then > group results by, say, ISBN and get responses grouped together... > This is an option but seems sub optimal. So say I store the discounts in multiple documents with ISDN as an attribute and also store the title again with ISDN as an attribute. To get "all books currently discounted" requires 2 request * get all discounts currently active * get all books using ISDN retrieved from above search Not that bad. However what happens when I want "all books that are currently on discount in the "horror" genre containing the word 'elm' in the title." The only way I can see in catering for the above search is to duplicate all searchable fields in my "book" document in my "discount" document. Coming from a RDBM background this seems wrong. Is this the correct approach to take? > > Best > Erick > > On Sat, Jun 4, 2011 at 1:42 AM, Judioo <cont...@judioo.com> wrote: > > Hi, > > Discounts can change daily. Also there can be a lot of them (over time > and > > in a given time period ). > > > > Could you give an example of what you mean buy multi-valuing the field. > > > > Thanks > > > > On 3 June 2011 14:29, Erick Erickson <erickerick...@gmail.com> wrote: > > > >> How often are the discounts changed? Because you can simply > >> re-index the book information with a multiValued "discounts" field > >> and get something similar to your example (&wt=json).... > >> > >> > >> Best > >> Erick > >> > >> On Fri, Jun 3, 2011 at 8:38 AM, Judioo <cont...@judioo.com> wrote: > >> > What is the "best practice" method to index the following in Solr: > >> > > >> > I'm attempting to use solr for a book store site. > >> > > >> > Each book will have a price but on occasions this will be discounted. > The > >> > discounted price exists for a defined time period but there may be > many > >> > discount periods. Each discount will have a brief synopsis, start and > end > >> > time. > >> > > >> > A subset of the desired output would be as follows: > >> > > >> > ....... > >> > "response":{"numFound":1,"start":0,"docs":[ > >> > { > >> > "name":"The Book", > >> > "price":"$9.99", > >> > "discounts":[ > >> > { > >> > "price":"$3.00", > >> > "synopsis":"thanksgiving special", > >> > "starts":"11-24-2011", > >> > "ends":"11-25-2011", > >> > }, > >> > { > >> > "price":"$4.00", > >> > "synopsis":"Canadian thanksgiving special", > >> > "starts":"10-10-2011", > >> > "ends":"10-11-2011", > >> > }, > >> > ] > >> > }, > >> > ......... > >> > > >> > A requirement is to be able to search for just discounted > publications. I > >> > think I could use date faceting for this ( return publications that > are > >> > within a discount window ). When a discount search is performed no > >> > publications that are not currently discounted will be returned. > >> > > >> > My question are: > >> > > >> > - Does solr support this type of sub documents > >> > > >> > In the above example the discounts are the sub documents. I know solr > is > >> not > >> > a relational DB but I would like to store and index the above > >> representation > >> > in a single document if possible. > >> > > >> > - what is the best method to approach the above > >> > > >> > I can see in many examples the authors tend to denormalize to solve > >> similar > >> > problems. This suggest that for each discount I am required to > duplicate > >> the > >> > book data or form a document > >> > association< > http://stackoverflow.com/questions/2689399/solr-associations > >> >. > >> > Which method would you advise? > >> > > >> > It would be nice if solr could return a response structured as above. > >> > > >> > Much Thanks > >> > > >> > > >