>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?
I think you should ask the exact opposite question. If you don't do anything
with these fields which Solr is particularly good at (searching / filtering
/ faceting/ sorting) why go through the trouble of creating dynamic fields?
 (more fields is more overhead cost/ tracking cost no matter how you look at
it)

Moreover, indeed from a client-view it's easier the way I suggested, since
otherwise you:
- would have to ask (through SolrJ) to include all dynamic fields to be
returned in the Fl-field (
http://wiki.apache.org/solr/CommonQueryParameters#fl). This is difficult,
because a-priori you don't know how many dynamic-fields to query. So in
other words you can't just ask SOlr (though SolrJ lik you asked) to just
return all dynamic fields beginning with pic_*. (afaik)
- your client iterate code (looping the pics) is a bit more involved.

HTH, Cheers,

Geert-Jan

2010/6/26 Saïd Radhouani <r.steve....@gmail.com>

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

Reply via email to