Thanks Geert-Jan for the detailed answer. Actually, I don't search at all on these fields. I'm only filtering (w/ vs w/ pic) and sorting (based on the number of pictures). Thus, your suggestion of adding an extra field NrOfPics [0,N] would be the best solution.
Regarding the other suggestion: > If you dont need search at all on these fields, the best thing imo is to > store all pic-related info of all pics together by concatenating them with > some delimiter which you know how to seperate at the client-side. > That or just store it in an external RDB since solr is just sitting on the > data and not doing anything intelligent with it. If I understand your suggestion correctly, you said that there's NO need to have many Dynamic Fields; instead, we can have one definitive field name, which can store a long string (concatenation of information about tens of pictures), e.g., using "-" and "%" delimiters: pic_url_value1-pic_caption_value1-pic_description_value1%pic_url_value2-pic_caption_value2-pic_description_value2%... I don't clearly see the reason of doing this. Is there a gain in terms of performance? Or does this make programming on the client-side easier? Or something else? My other question was: in case we use Dynamic Fields, is there a documentation about using SolrJ for this purpose? Thanks -Saïd On Jun 26, 2010, at 12:29 PM, Geert-Jan Brits wrote: > You can treat dynamic fields like any other field, so you can facet, sort, > filter, etc on these fields (afaik) > > I believe the confusion arises that sometimes the usecase for dynamic fields > seems to be ill-understood, i.e: to be able to use them to do some kind of > wildcard search, e.g: search for a value in any of the dynamic fields at > once like pic_url_*. This however is NOT possible. > > As far as your question goes: > >> Now, I'm trying to make facets on pictures: display doc w/ pic vs. doc w/o > pic >> To the best of my knowledge, everyone is saying that faceting cannot be > done on dynamic fields (only on definitive field names). Thus, I tried the > following and it's working: I assume that the stored > >pictures have a > sequential number (_1, _2, etc.), i.e., if pic_url_1 exists in the index, it > means that the underlying doc has at least one picture: >> ...&facet=on&facet.field=pic_url_1&facet.mincount=1&fq=pic_url_1:* >> While this is working fine, I'm wondering whether there's a cleaner way to > do the same thing without assuming that pictures have a sequential number. > > If I understand your question correctly: faceting on docs with and without > pics could ofcourse by done like you mention, however it would be more > efficient to have an extra field defined: hasAtLestOnePic with values (0 | > 1) > use that to facet / filter on. > > you can extend this to NrOfPics [0,N) if you need to filter / facet on docs > with a certain nr of pics. > > also I wondered what else you wanted to do with this pic-related info. Do > you want to search on pic-description / pic-caption for instance? In that > case the dynamic-fields approach may not be what you want: how would you > know in which dynamic-field to search for a particular term? Would if be > pic_desc_1 , or pic_desc_x? Of couse you could OR over all dynamic fields, > but you need to know how many pics an upperbound for the nr of pics and it > really doesn't feel right, to me at least. > > If you need search on pic_description for instance, but don't mind what pic > matches, you could create a single field pic_description and put in the > concat of all pic-descriptions and search on that, or just make it a a > multi-valued field. > > If you dont need search at all on these fields, the best thing imo is to > store all pic-related info of all pics together by concatenating them with > some delimiter which you know how to seperate at the client-side. > That or just store it in an external RDB since solr is just sitting on the > data and not doing anything intelligent with it. > > I assume btw that you don't want to sort/ facet on pic-desc / pic_caption/ > pic_url either ( I have a hard time thinking of a useful usecase for that) > > HTH, > > Geert-Jan > > > > 2010/6/26 Saïd Radhouani <r.steve....@gmail.com> > >> Thanks so much Otis. This is working great. >> >> Now, I'm trying to make facets on pictures: display doc w/ pic vs. doc w/o >> pic >> >> To the best of my knowledge, everyone is saying that faceting cannot be >> done on dynamic fields (only on definitive field names). Thus, I tried the >> following and it's working: I assume that the stored pictures have a >> sequential number (_1, _2, etc.), i.e., if pic_url_1 exists in the index, it >> means that the underlying doc has at least one picture: >> >> ...&facet=on&facet.field=pic_url_1&facet.mincount=1&fq=pic_url_1:* >> >> While this is working fine, I'm wondering whether there's a cleaner way to >> do the same thing without assuming that pictures have a sequential number. >> >> Also, do you have any documentation about handling Dynamic Fields using >> SolrJ. So far, I found only issues about that on JIRA, but no documentation. >> >> Thanks a lot. >> >> -Saïd >> >> On Jun 26, 2010, at 1:18 AM, Otis Gospodnetic wrote: >> >>> Saïd, >>> >>> Dynamic fields could help here, for example imagine a doc with: >>> id >>> pic_url_* >>> pic_caption_* >>> pic_description_* >>> >>> See http://wiki.apache.org/solr/SchemaXml#Dynamic_fields >>> >>> So, for you: >>> >>> <dynamicField name="pic_url_*" type="string" indexed="true" >> stored="true"/> >>> <dynamicField name="pic_caption_*" type="text" indexed="true" >> stored="true"/> >>> <dynamicField name="pic_description_*" type="text" indexed="true" >> stored="true"/> >>> >>> Then you can add docs with unlimited number of >> pic_(url|caption|description)_* fields, e.g. >>> >>> id >>> pic_url_1 >>> pic_caption_1 >>> pic_description_1 >>> >>> id >>> pic_url_2 >>> pic_caption_2 >>> pic_description_2 >>> >>> >>> Otis >>> ---- >>> Sematext :: http://sematext.com/ :: Solr - Lucene - Nutch >>> Lucene ecosystem search :: http://search-lucene.com/ >>> >>> >>> >>> ----- Original Message ---- >>>> From: Saïd Radhouani <r.steve....@gmail.com> >>>> To: solr-user@lucene.apache.org >>>> Sent: Fri, June 25, 2010 6:01:13 PM >>>> Subject: Setting many properties for a multivalued field. Schema.xml ? >> External file? >>>> >>>> Hi, >>> >>> I'm trying to index data containing a multivalued field "picture", >>>> that has three properties: url, caption and description: >>> >>> <picture/> >>>> >>> <url/> >>> >>>> <caption/> >>> <description/> >>> >>> Thus, each >>>> indexed document might have many pictures, each of them has a url, a >> caption, >>>> and a description. >>> >>> I wonder wether it's possible to store this data using >>>> only schema.xml. I couldn't figure it out so far. Instead, I'm thinking >> of using >>>> an external file to sore the properties of each picture, but I haven't >> tried yet >>>> this solution, waiting for your suggestions... >>> >>> Thanks, >>> -Saïd >> >>