Is there a kind of function query that can count number of values in a multi-valued field on a given document? I do not know. ________________________________________ From: Erick Erickson [erickerick...@gmail.com] Sent: Sunday, April 03, 2011 10:37 PM To: solr-user@lucene.apache.org Subject: Re: Faceting on multivalued field
Why not count them on the way in and just store that number along with the original e-mail? Best Erick On Sun, Apr 3, 2011 at 10:10 PM, Kaushik Chakraborty <kaych...@gmail.com>wrote: > Ok. My expectation was since "comment_post_id" is a MultiValued field hence > it would appear multiple times (i.e. for each comment). And hence when I > would facet with that field it would also give me the count of those many > documents where comment_post_id appears. > > My requirement is getting total for every document i.e. finding number of > comments per post in the whole corpus. To explain it more clearly, I'm > getting a result xml something like this > > <str name="post_id">46</str> > <str name="post_text">Hello World</str> > <str name="person_id">20</str> > <arr name="comment_id"> > <str>9</str> > <str>10</str> > </arr> > <arr name="comment_person_id"> > <str>19</str> > <str>2</str> > </arr> > <arr name="comment_post_id"> > <str>46</str> > <str>46</str> > </arr> > <arr name="comment_text"> > <str>Hello - from World</str> > <str>Hi</str> > </arr> > > <lst name="facet_fields"> > <lst name="comment_post_id"> > *<int name="46">1</int>* > > I need the count to be 2 as the post 46 has 2 comments. > > What other way can I approach? > > Thanks, > Kaushik > > > On Mon, Apr 4, 2011 at 4:29 AM, Erick Erickson <erickerick...@gmail.com > >wrote: > > > Hmmm, I think you're misunderstanding faceting. It's counting the > > number of documents that have a particular value. So if you're > > faceting on "comment_post_id", there is one and only one document > > with that value (assuming that the comment_post_ids are unique). > > Which is what's being reported.... This will be quite expensive on a > > large corpus, BTW. > > > > Is your task to show the totals for *every* document in your corpus or > > just the ones in a display page? Because if the latter, your app could > > just count up the number of elements in the XML returned for the > > multiValued comments field. > > > > If that's not relevant, could you explain a bit more why you need this > > count? > > > > Best > > Erick > > > > On Sun, Apr 3, 2011 at 2:31 PM, Kaushik Chakraborty <kaych...@gmail.com > > >wrote: > > > > > Hi, > > > > > > My index contains a root entity "Post" and a child entity "Comments". > > Each > > > post can have multiple comments. data-config.xml: > > > > > > <document> > > > <entity name="posts" transformer="TemplateTransformer" > > > dataSource="jdbc" query=""> > > > > > > <field column="post_id" /> > > > <field column="post_text"/> > > > <field column="person_id"/> > > > <entity name="comments" dataSource="jdbc" query="select > * > > > from comments where post_id = ${posts.post_id}" > > > > <field column="comment_id" /> > > > <field column="comment_text" /> > > > <field column="comment_person_id" /> > > > <field column="comment_post_id" /> > > > </entity> > > > </entity> > > > </document> > > > > > > The schema has all columns of "comment" entity as "MultiValued" fields > > and > > > all fields are indexed & stored. My requirement is to count the number > of > > > comments for each post. Approach I'm taking is to query on "*:*" and > > > faceting the result on "comment_post_id" so that it gives the count of > > > comment occurred for that post. > > > > > > But I'm getting incorrect result e.g. if a post has 2 comments, the > > > multivalued fields are populated alright but the facet count is coming > as > > 1 > > > (for that post_id). What else do I need to do? > > > > > > > > > Thanks, > > > Kaushik > > > > > >