You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by cp...@apache.org on 2024/02/05 16:04:38 UTC

(solr) branch branch_9x updated: SOLR-17038: /admin/segments handler: Expose the term count (#2233)

This is an automated email from the ASF dual-hosted git repository.

cpoerschke pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/branch_9x by this push:
     new d9f48edf223 SOLR-17038: /admin/segments handler: Expose the term count (#2233)
d9f48edf223 is described below

commit d9f48edf223b86ad0cd53fb4f5bb90d29c175a3e
Author: Rahul Goswami <ra...@gmail.com>
AuthorDate: Mon Feb 5 10:55:03 2024 -0500

    SOLR-17038: /admin/segments handler: Expose the term count (#2233)
    
    (cherry picked from commit dbf1d1d5b444f4a416dd64af1fb30529f17f607b)
---
 solr/CHANGES.txt                                   |  3 +++
 .../handler/admin/SegmentsInfoRequestHandler.java  |  1 +
 .../admin/SegmentsInfoRequestHandlerTest.java      | 29 +++++++++++++++++++---
 3 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index dc99b116d59..9897ba24226 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -17,6 +17,9 @@ Improvements
 * SOLR-16699: Add Collection creation time to CLUSTERSTATUS and COLSTATUS API responses
   (Julien Pilourdault, Paul McArthur, David Smiley)
 
+* SOLR-17038: Expose the term count in /admin/segments handler if fieldInfo=true.
+  (Rahul Goswami via David Smiley and Christine Poerschke)
+
 Optimizations
 ---------------------
 * SOLR-17144: Close searcherExecutor thread per core after 1 minute (Pierre Salagnac, Christine Poerschke)
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/SegmentsInfoRequestHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/SegmentsInfoRequestHandler.java
index cd4a325faf8..5acd633d11b 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/SegmentsInfoRequestHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/SegmentsInfoRequestHandler.java
@@ -368,6 +368,7 @@ public class SegmentsInfoRequestHandler extends RequestHandlerBase {
       Terms terms = reader.terms(fi.name);
       if (terms != null) {
         fieldFlags.add("docCount", terms.getDocCount());
+        fieldFlags.add("termCount", terms.size());
         fieldFlags.add("sumDocFreq", terms.getSumDocFreq());
         fieldFlags.add("sumTotalTermFreq", terms.getSumTotalTermFreq());
       }
diff --git a/solr/core/src/test/org/apache/solr/handler/admin/SegmentsInfoRequestHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/admin/SegmentsInfoRequestHandlerTest.java
index 95e0a55e900..5a562eabe35 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/SegmentsInfoRequestHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/SegmentsInfoRequestHandlerTest.java
@@ -36,6 +36,8 @@ public class SegmentsInfoRequestHandlerTest extends SolrTestCaseJ4 {
 
   private static final int NUM_SEGMENTS = 2;
 
+  private static final int NUM_FIELD_INFO_PROPERTIES = 6;
+
   private static int initialRefCount;
 
   @BeforeClass
@@ -154,18 +156,39 @@ public class SegmentsInfoRequestHandlerTest extends SolrTestCaseJ4 {
 
   @Test
   public void testFieldInfo() throws Exception {
-    String[] segmentNamePatterns = new String[NUM_SEGMENTS];
+    String[] segmentNamePatterns = new String[NUM_SEGMENTS * NUM_FIELD_INFO_PROPERTIES];
     h.getCore()
         .withSearcher(
             (searcher) -> {
-              int i = 0;
+              int i = 0, j = 0;
+
               for (SegmentCommitInfo sInfo :
                   SegmentInfos.readLatestCommit(searcher.getIndexReader().directory())) {
                 assertTrue("Unexpected number of segment in the index: " + i, i < NUM_SEGMENTS);
-                segmentNamePatterns[i] =
+                segmentNamePatterns[j++] =
                     "boolean(//lst[@name='segments']/lst[@name='"
                         + sInfo.info.name
                         + "']/lst[@name='fields']/lst[@name='id']/str[@name='flags'])";
+                segmentNamePatterns[j++] =
+                    "boolean(//lst[@name='segments']/lst[@name='"
+                        + sInfo.info.name
+                        + "']/lst[@name='fields']/lst[@name='id']/int[@name='docCount'])";
+                segmentNamePatterns[j++] =
+                    "boolean(//lst[@name='segments']/lst[@name='"
+                        + sInfo.info.name
+                        + "']/lst[@name='fields']/lst[@name='id']/long[@name='termCount'])";
+                segmentNamePatterns[j++] =
+                    "boolean(//lst[@name='segments']/lst[@name='"
+                        + sInfo.info.name
+                        + "']/lst[@name='fields']/lst[@name='id']/long[@name='sumDocFreq'])";
+                segmentNamePatterns[j++] =
+                    "boolean(//lst[@name='segments']/lst[@name='"
+                        + sInfo.info.name
+                        + "']/lst[@name='fields']/lst[@name='id']/long[@name='sumTotalTermFreq'])";
+                segmentNamePatterns[j++] =
+                    "boolean(//lst[@name='segments']/lst[@name='"
+                        + sInfo.info.name
+                        + "']/lst[@name='fields']/lst[@name='id']/str[@name='schemaType'])";
                 i++;
               }