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 15:55:09 UTC
(solr) branch main 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 main
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/main by this push:
new dbf1d1d5b44 SOLR-17038: /admin/segments handler: Expose the term count (#2233)
dbf1d1d5b44 is described below
commit dbf1d1d5b444f4a416dd64af1fb30529f17f607b
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)
---
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 4c9b81d3826..db542ef7db8 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -90,6 +90,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++;
}