Re: [PR] SOLR-17649: Fix Json faceting on multivalue number types [solr]

2025-02-12 Thread via GitHub


dsmiley merged PR #3158:
URL: https://github.com/apache/solr/pull/3158


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-17649: Fix Json faceting on multivalue number types [solr]

2025-02-09 Thread via GitHub


dsmiley commented on code in PR #3158:
URL: https://github.com/apache/solr/pull/3158#discussion_r1948247603


##
solr/core/src/java/org/apache/solr/search/facet/FieldUtil.java:
##
@@ -44,27 +48,49 @@ public static SortedDocValues 
getSortedDocValues(SolrIndexSearcher searcher, Str
 
   public static SortedDocValues getSortedDocValues(
   QueryContext context, SchemaField field, QParser qparser) throws 
IOException {
-SortedDocValues si =
-
context.searcher().getSlowAtomicReader().getSortedDocValues(field.getName());
-// if (!field.hasDocValues() && (field.getType() instanceof StrField || 
field.getType()
-// instanceof TextField)) {
-// }
-
-return si == null ? DocValues.emptySorted() : si;
+var reader = context.searcher().getSlowAtomicReader();
+var dv = reader.getSortedDocValues(field.getName());
+checkDvType(dv, field, reader);
+return dv == null ? DocValues.emptySorted() : dv;
   }
 
   public static SortedSetDocValues getSortedSetDocValues(
   QueryContext context, SchemaField field, QParser qparser) throws 
IOException {
-SortedSetDocValues si =
-
context.searcher().getSlowAtomicReader().getSortedSetDocValues(field.getName());
-return si == null ? DocValues.emptySortedSet() : si;
+var reader = context.searcher().getSlowAtomicReader();
+var dv = reader.getSortedSetDocValues(field.getName());
+checkDvType(dv, field, reader);
+return dv == null ? DocValues.emptySortedSet() : dv;
   }
 
   public static NumericDocValues getNumericDocValues(
   QueryContext context, SchemaField field, QParser qparser) throws 
IOException {
-SolrIndexSearcher searcher = context.searcher();
-NumericDocValues si = 
searcher.getSlowAtomicReader().getNumericDocValues(field.getName());
-return si == null ? DocValues.emptyNumeric() : si;
+var reader = context.searcher().getSlowAtomicReader();
+var dv = reader.getNumericDocValues(field.getName());
+checkDvType(dv, field, reader);
+return dv == null ? DocValues.emptyNumeric() : dv;
+  }
+
+  private static void checkDvType(Object dv, SchemaField field, LeafReader 
reader) {

Review Comment:
   There's wasn't a class cast; there was empty/no data which ultimately leads 
to no facet results.  That's *worse* than throwing an exception (of whatever 
type; no strong opinion from me).  This is my primary addition to the PR; don't 
*just* fix the wrong algorithm choice, but ensure we throw an exception in 
cases that would previously silently produce nothing.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-17649: Fix Json faceting on multivalue number types [solr]

2025-02-09 Thread via GitHub


dsmiley commented on code in PR #3158:
URL: https://github.com/apache/solr/pull/3158#discussion_r1948246532


##
solr/core/src/java/org/apache/solr/search/facet/FacetField.java:
##
@@ -139,11 +139,11 @@ public FacetProcessor 
createFacetProcessor(FacetContext fcontext) {
 // FieldType.getDocValuesType()
 
 if (!multiToken) {
-  if (mincount > 0 && prefix == null && (ntype != null || method == 
FacetMethod.DVHASH)) {
+  if (mincount > 0 && prefix == null && (isNumber || method == 
FacetMethod.DVHASH)) {
 // TODO can we auto-pick for strings when term cardinality is much 
greater than DocSet
 // cardinality? or if we don't know cardinality but DocSet size is 
very small
 return new FacetFieldProcessorByHashDV(fcontext, this, sf);
-  } else if (ntype == null) {
+  } else if (isNumber == false) {

Review Comment:
   Maybe you are not familiar that Lucene & Solr has recognized this style as 
acceptable due to its clarity



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-17649: Fix Json faceting on multivalue number types [solr]

2025-02-09 Thread via GitHub


mkhludnev commented on code in PR #3158:
URL: https://github.com/apache/solr/pull/3158#discussion_r1948227521


##
solr/core/src/java/org/apache/solr/search/facet/FacetField.java:
##
@@ -139,11 +139,11 @@ public FacetProcessor 
createFacetProcessor(FacetContext fcontext) {
 // FieldType.getDocValuesType()
 
 if (!multiToken) {
-  if (mincount > 0 && prefix == null && (ntype != null || method == 
FacetMethod.DVHASH)) {
+  if (mincount > 0 && prefix == null && (isNumber || method == 
FacetMethod.DVHASH)) {
 // TODO can we auto-pick for strings when term cardinality is much 
greater than DocSet
 // cardinality? or if we don't know cardinality but DocSet size is 
very small
 return new FacetFieldProcessorByHashDV(fcontext, this, sf);
-  } else if (ntype == null) {
+  } else if (isNumber == false) {

Review Comment:
   !isNumber



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-17649: Fix Json faceting on multivalue number types [solr]

2025-02-09 Thread via GitHub


mkhludnev commented on code in PR #3158:
URL: https://github.com/apache/solr/pull/3158#discussion_r1948229222


##
solr/core/src/java/org/apache/solr/search/facet/FieldUtil.java:
##
@@ -44,27 +48,49 @@ public static SortedDocValues 
getSortedDocValues(SolrIndexSearcher searcher, Str
 
   public static SortedDocValues getSortedDocValues(
   QueryContext context, SchemaField field, QParser qparser) throws 
IOException {
-SortedDocValues si =
-
context.searcher().getSlowAtomicReader().getSortedDocValues(field.getName());
-// if (!field.hasDocValues() && (field.getType() instanceof StrField || 
field.getType()
-// instanceof TextField)) {
-// }
-
-return si == null ? DocValues.emptySorted() : si;
+var reader = context.searcher().getSlowAtomicReader();
+var dv = reader.getSortedDocValues(field.getName());
+checkDvType(dv, field, reader);
+return dv == null ? DocValues.emptySorted() : dv;
   }
 
   public static SortedSetDocValues getSortedSetDocValues(
   QueryContext context, SchemaField field, QParser qparser) throws 
IOException {
-SortedSetDocValues si =
-
context.searcher().getSlowAtomicReader().getSortedSetDocValues(field.getName());
-return si == null ? DocValues.emptySortedSet() : si;
+var reader = context.searcher().getSlowAtomicReader();
+var dv = reader.getSortedSetDocValues(field.getName());
+checkDvType(dv, field, reader);
+return dv == null ? DocValues.emptySortedSet() : dv;
   }
 
   public static NumericDocValues getNumericDocValues(
   QueryContext context, SchemaField field, QParser qparser) throws 
IOException {
-SolrIndexSearcher searcher = context.searcher();
-NumericDocValues si = 
searcher.getSlowAtomicReader().getNumericDocValues(field.getName());
-return si == null ? DocValues.emptyNumeric() : si;
+var reader = context.searcher().getSlowAtomicReader();
+var dv = reader.getNumericDocValues(field.getName());
+checkDvType(dv, field, reader);
+return dv == null ? DocValues.emptyNumeric() : dv;
+  }
+
+  private static void checkDvType(Object dv, SchemaField field, LeafReader 
reader) {

Review Comment:
   It's not clear why to have this 20 lines. If we remove it, I think it just 
fails at class cast somewhere later. Why ISE is better than ClassCastException 
later? It's  just not obvious.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-17649: Fix Json faceting on multivalue number types [solr]

2025-02-09 Thread via GitHub


dsmiley commented on PR #3158:
URL: https://github.com/apache/solr/pull/3158#issuecomment-2646477023

   Looking for additional code review since I contributed to this PR 
substantially.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-17649: Fix Json faceting on multivalue number types [solr]

2025-02-06 Thread via GitHub


dsmiley commented on code in PR #3158:
URL: https://github.com/apache/solr/pull/3158#discussion_r1945285244


##
solr/CHANGES.txt:
##
@@ -187,6 +187,8 @@ Bug Fixes
 
 * SOLR-17652: Fix a bug that could cause long leader elections to leave PULL 
replicas in DOWN state forever. (hossman)
 
+* SOLR-17649: Fix a regression of faceting on multi-valued EnumFieldType, 
introduced by an earlier 9.x version. (Thomas Wöckinger, David Smiley, Houston 
Putman, Kevin Risden)

Review Comment:
   LOL if I merge this I'll just list yourself; I don't want any hint of 
credit.  As a reviewer my input was too trivial in this case to justify my name 
being listed.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-17649: Fix Json faceting on multivalue number types [solr]

2025-02-06 Thread via GitHub


dsmiley commented on code in PR #3158:
URL: https://github.com/apache/solr/pull/3158#discussion_r1944771535


##
solr/core/src/java/org/apache/solr/search/facet/FacetField.java:
##
@@ -152,7 +152,7 @@ public FacetProcessor 
createFacetProcessor(FacetContext fcontext) {
   }
 }
 

Review Comment:
   There's a comment below: `// multi-valued after this point`.  Can you please 
move that up above the condition you are modifying, since I think it belongs 
higher.  



##
solr/core/src/test/org/apache/solr/search/facet/TestJsonFacets.java:
##
@@ -4907,6 +4907,38 @@ public void testQueryJoinBooksAndPages() throws 
Exception {
 + ", books2:{ buckets:[ {val:q,count:1}, {val:w,count:1} ] }"
 + "}");
   }
+  
+  @Test
+  public void testMultivalueEnumTypes() throws Exception {
+final Client client = Client.localClient();
+
+final SolrParams p = params("rows", "0");
+
+client.deleteByQuery("*:*", null);
+
+List docsToAdd = new ArrayList<>(6);

Review Comment:
   Whoops; right; never mind.  We have too many weird test infrastructure 
things.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-17649: Fix Json faceting on multivalue number types [solr]

2025-02-06 Thread via GitHub


thomaswoeckinger commented on code in PR #3158:
URL: https://github.com/apache/solr/pull/3158#discussion_r1944322475


##
solr/core/src/test/org/apache/solr/search/facet/TestJsonFacets.java:
##
@@ -4907,6 +4907,38 @@ public void testQueryJoinBooksAndPages() throws 
Exception {
 + ", books2:{ buckets:[ {val:q,count:1}, {val:w,count:1} ] }"
 + "}");
   }
+  
+  @Test
+  public void testMultivalueEnumTypes() throws Exception {
+final Client client = Client.localClient();
+
+final SolrParams p = params("rows", "0");
+
+client.deleteByQuery("*:*", null);
+
+List docsToAdd = new ArrayList<>(6);

Review Comment:
   I tried but this will make the test more complicated as 
SolrTestCaseHS.Client does not keep a SolrClient and uses null therefore in 
internal API calls, may you have an hint for that, but the whole test class is 
not using an UpdateRequest



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-17649: Fix Json faceting on multivalue number types [solr]

2025-02-05 Thread via GitHub


thomaswoeckinger commented on PR #3158:
URL: https://github.com/apache/solr/pull/3158#issuecomment-2639051999

   > It's unfortunate we can't check the docValues format, but can we at least 
add a comment explaining this. It's a bit confusing just looking at it without 
context.
   
   FacetFieldProcessorByArrayDV does not handle DocValuesType.SORTED_NUMERIC 
because in method findStartAndEndOrds FieldUtil.getSortedSetDocValues is used, 
which can not handle this kind of DocValuesType.
   
   In detail FacetFieldProcessorByArrayDV  extends FacetFieldProcessorByArray 
which seems to be designed for DocValuesType.SORTED_SET, because the method 
lookupOrd is only possible when having such a type.
   
   Saying that, you may have some suggestions for a code comment.
   
   For me it seems this was not working form the beginning of the 9x branch, 
there was simply not test for it. 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-17649: Fix Json faceting on multivalue number types [solr]

2025-02-05 Thread via GitHub


dsmiley commented on code in PR #3158:
URL: https://github.com/apache/solr/pull/3158#discussion_r1943824313


##
solr/core/src/test/org/apache/solr/search/facet/TestJsonFacets.java:
##
@@ -4907,6 +4907,38 @@ public void testQueryJoinBooksAndPages() throws 
Exception {
 + ", books2:{ buckets:[ {val:q,count:1}, {val:w,count:1} ] }"
 + "}");
   }
+  
+  @Test
+  public void testMultivalueEnumTypes() throws Exception {
+final Client client = Client.localClient();
+
+final SolrParams p = params("rows", "0");
+
+client.deleteByQuery("*:*", null);
+
+List docsToAdd = new ArrayList<>(6);

Review Comment:
   Can you add them to an UpdateRequest so they are batched instead of sending 
them individually?  Same LOC in the end but avoids an anti-pattern.  Or is the 
separation pertinent to what's being tested?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-17649: Fix Json faceting on multivalue number types [solr]

2025-02-05 Thread via GitHub


thomaswoeckinger commented on PR #3158:
URL: https://github.com/apache/solr/pull/3158#issuecomment-2636198561

   @dsmiley @gerlowskija May you know who is responsible for this part of 
faceting code, to get a reviewer


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org



Re: [PR] SOLR-17649: Fix Json faceting on multivalue number types [solr]

2025-02-04 Thread via GitHub


thomaswoeckinger commented on PR #3158:
URL: https://github.com/apache/solr/pull/3158#issuecomment-2634739177

   @risdenk as your are one of the last commiters in this area, you may have a 
look at this PR


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


-
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org