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 > >