Hi Erick, please consider this case where there is a group products that are televisions.
Now I have only one category per product, but in same cases like the television I could have more than one. Some products should be available simultaneously in more categories, thats why the field I was trying to group is a multivalue, for example: /home-video/televisions/tv-led (516) /home-video/televisions/tv-ultra-hd-4k (363) /home-video/televisions/smart-tv (19) So there can be a television that is simultaneously a TV led, a smart tv and is ultra hd 4k. So, for example, I should be able to submit the following query: - fq=available:true - fq=vertical:0 - q=television - rows=3 - group=true - group.field=category - group.limit=0 So the returned groups should be something like this (this is the output I have now for the single value field) <lst name="grouped"> <lst name="category"> <int name="matches">51653</int> <arr name="groups"> <lst> <str name="groupValue">/home-video/televisions/tv-led</str> <result name="doclist" numFound="516" start="0" maxScore="0.6224861"> </result> </lst> <lst> <str name="groupValue">/home-video/televisions/tv-ultra-hd-4k</str> <result name="doclist" numFound="363" start="0" maxScore="0.5923965"> </result> </lst> <lst> <str name="groupValue">/home-video/televisions/smart-tv</str> <result name="doclist" numFound="19" start="0" maxScore="0.5749302"> </result> </lst> </arr> </lst> </lst> On Mon, Feb 26, 2018 at 4:44 PM, Erick Erickson <erickerick...@gmail.com> wrote: > What does "group by" mean on a field with more than one value? Say I > have "A" and "B" in the field in a single document. What group does it > go in, one labeld "A" or one labeled "B"? > > So IIUC, rather than do something which will be wrong it throws an > error if the field is defined as multiValued. And whatever option is > chosen (e.g. use the min or max or....) will be wrong sometime. > > Although admittedly the error is a bit obscure... > > Best, > Erick > > On Mon, Feb 26, 2018 at 7:37 AM, Vincenzo D'Amore <v.dam...@gmail.com> > wrote: > > Hi Amrit, > > > > thanks for your help. > > > > I know that only 5/10% of documents in the collection have more than one > > value for the field I was trying to group by. > > > > So there isn't a particular memory usage in this case. Do you know if > there > > is any other counter-indication I have to be aware of? > > > > I was thinking to avoid this problem hacking the source code and deploy a > > personalised version of Solr. > > > > Best regards, > > Vincenzo > > > > > > > > On Mon, Feb 26, 2018 at 3:22 PM, Amrit Sarkar <sarkaramr...@gmail.com> > > wrote: > > > >> Vincenzo, > >> > >> As I read the source code; SchemaField.java > >> > >> /** > >> * Sanity checks that the properties of this field type are plausible > >> * for a field that may be used to get a FieldCacheSource, throwing > >> * an appropriate exception (including the field name) if it is not. > >> * FieldType subclasses can choose to call this method in their > >> * getValueSource implementation > >> * @see FieldType#getValueSource > >> */ > >> public void checkFieldCacheSource() throws SolrException { > >> if ( multiValued() ) { > >> throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, > >> "can not use FieldCache on multivalued > field: " > >> + getName()); > >> } > >> if (! hasDocValues() ) { > >> if ( ! ( indexed() && null != this.type.getUninversionType(this) ) > ) { > >> throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, > >> "can not use FieldCache on a field w/o > >> docValues unless it is indexed and supports Uninversion: " > >> + getName()); > >> } > >> } > >> } > >> > >> Seems like FieldCache are not allowed to un-invert values for > >> multi-valued fields. > >> > >> I can suspect the reason, multiple values will eat up more memory? Not > >> sure, someone else can weigh in. > >> > >> > >> > >> Amrit Sarkar > >> Search Engineer > >> Lucidworks, Inc. > >> 415-589-9269 > >> www.lucidworks.com > >> Twitter http://twitter.com/lucidworks > >> LinkedIn: https://www.linkedin.com/in/sarkaramrit2 > >> Medium: https://medium.com/@sarkaramrit2 > >> > >> On Mon, Feb 26, 2018 at 7:37 PM, Vincenzo D'Amore <v.dam...@gmail.com> > >> wrote: > >> > >> > Hi, > >> > > >> > while trying to run a group query on a multivalue field I received > this > >> > error: > >> > > >> > can not use FieldCache on multivalued field: > >> > > >> > <?xml version="1.0" encoding="UTF-8"?> > >> > <response> > >> > > >> > <lst name="responseHeader"> > >> > <bool name="zkConnected">true</bool> > >> > <int name="status">400</int> > >> > <int name="QTime">4</int> > >> > </lst> > >> > <lst name="error"> > >> > <lst name="metadata"> > >> > <str name="error-class">org.apache.solr.common.SolrException</ > str> > >> > <str name="root-error-class">org.apache.solr.common. > >> > SolrException</str> > >> > </lst> > >> > <str name="msg">can not use FieldCache on multivalued field: > >> > categoryLevels</str> > >> > <int name="code">400</int> > >> > </lst> > >> > </response> > >> > > >> > I don't understand why this is happening. > >> > > >> > Do you know any way to work around this problem? > >> > > >> > Thanks in advance, > >> > Vincenzo > >> > > >> > -- > >> > Vincenzo D'Amore > >> > > >> > > > > > > > > -- > > Vincenzo D'Amore > -- Vincenzo D'Amore