diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt index 7a4bfab9c132..9a9b90fc9d9c 100644 --- a/lucene/CHANGES.txt +++ b/lucene/CHANGES.txt @@ -94,7 +94,8 @@ API Changes TopFieldCollectorManager. Clarify thread-safety documentation. (Prudhvi Godithi) * GITHUB#16052: Remove IOException from LeafReader#getPointValues, LeafReader#terms, - LeafReader#getDocCount signatures. (Ignacio Vera) + LeafReader#getDocCount, LeafReader#getSumDocFreq and LeafReader#getSumTotalTermFreq + signatures. (Ignacio Vera) New Features --------------------- diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java index e24b2f3b46b0..a228ba976d02 100644 --- a/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java +++ b/lucene/codecs/src/java/org/apache/lucene/codecs/blockterms/BlockTermsReader.java @@ -287,7 +287,7 @@ public long getSumTotalTermFreq() { } @Override - public long getSumDocFreq() throws IOException { + public long getSumDocFreq() { return sumDocFreq; } diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/bloom/BloomFilteringPostingsFormat.java b/lucene/codecs/src/java/org/apache/lucene/codecs/bloom/BloomFilteringPostingsFormat.java index 7064e66868d4..7db44cf7963f 100644 --- a/lucene/codecs/src/java/org/apache/lucene/codecs/bloom/BloomFilteringPostingsFormat.java +++ b/lucene/codecs/src/java/org/apache/lucene/codecs/bloom/BloomFilteringPostingsFormat.java @@ -235,12 +235,12 @@ public long size() throws IOException { } @Override - public long getSumTotalTermFreq() throws IOException { + public long getSumTotalTermFreq() { return delegateTerms.getSumTotalTermFreq(); } @Override - public long getSumDocFreq() throws IOException { + public long getSumDocFreq() { return delegateTerms.getSumDocFreq(); } diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/memory/FSTTermsReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/memory/FSTTermsReader.java index 397d08827fca..3a7fc1c7503e 100644 --- a/lucene/codecs/src/java/org/apache/lucene/codecs/memory/FSTTermsReader.java +++ b/lucene/codecs/src/java/org/apache/lucene/codecs/memory/FSTTermsReader.java @@ -246,7 +246,7 @@ public long getSumTotalTermFreq() { } @Override - public long getSumDocFreq() throws IOException { + public long getSumDocFreq() { return sumDocFreq; } diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java index 71e44fb0f82f..f7465222a4be 100644 --- a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java +++ b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java @@ -769,7 +769,7 @@ public long getSumTotalTermFreq() { } @Override - public long getSumDocFreq() throws IOException { + public long getSumDocFreq() { return sumDocFreq; } diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java index 5306cee211e6..1aae10de79ae 100644 --- a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java +++ b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java @@ -34,6 +34,7 @@ import static org.apache.lucene.codecs.simpletext.SimpleTextTermVectorsWriter.VECTORS_EXTENSION; import java.io.IOException; +import java.io.UncheckedIOException; import java.util.Collections; import java.util.Iterator; import java.util.Map; @@ -296,18 +297,22 @@ public long size() throws IOException { } @Override - public long getSumTotalTermFreq() throws IOException { - // TODO: make it constant-time - long ttf = 0; - TermsEnum iterator = iterator(); - for (BytesRef b = iterator.next(); b != null; b = iterator.next()) { - ttf += iterator.totalTermFreq(); + public long getSumTotalTermFreq() { + try { + // TODO: make it constant-time by pre-computing during indexing + long ttf = 0; + TermsEnum iterator = iterator(); + for (BytesRef b = iterator.next(); b != null; b = iterator.next()) { + ttf += iterator.totalTermFreq(); + } + return ttf; + } catch (IOException e) { + throw new UncheckedIOException(e); } - return ttf; } @Override - public long getSumDocFreq() throws IOException { + public long getSumDocFreq() { return terms.size(); } diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/Lucene90CompressingTermVectorsReader.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/Lucene90CompressingTermVectorsReader.java index 5c1e0ed23b83..d0a39af2408f 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/Lucene90CompressingTermVectorsReader.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/compressing/Lucene90CompressingTermVectorsReader.java @@ -1017,12 +1017,12 @@ public long size() throws IOException { } @Override - public long getSumTotalTermFreq() throws IOException { + public long getSumTotalTermFreq() { return totalTermFreq; } @Override - public long getSumDocFreq() throws IOException { + public long getSumDocFreq() { return numTerms; } diff --git a/lucene/core/src/java/org/apache/lucene/index/FilterLeafReader.java b/lucene/core/src/java/org/apache/lucene/index/FilterLeafReader.java index e11dd33c0d07..9e9cb1d76d9a 100644 --- a/lucene/core/src/java/org/apache/lucene/index/FilterLeafReader.java +++ b/lucene/core/src/java/org/apache/lucene/index/FilterLeafReader.java @@ -121,12 +121,12 @@ public long size() throws IOException { } @Override - public long getSumTotalTermFreq() throws IOException { + public long getSumTotalTermFreq() { return in.getSumTotalTermFreq(); } @Override - public long getSumDocFreq() throws IOException { + public long getSumDocFreq() { return in.getSumDocFreq(); } diff --git a/lucene/core/src/java/org/apache/lucene/index/LeafReader.java b/lucene/core/src/java/org/apache/lucene/index/LeafReader.java index 8e010151274e..5d8f5d432667 100644 --- a/lucene/core/src/java/org/apache/lucene/index/LeafReader.java +++ b/lucene/core/src/java/org/apache/lucene/index/LeafReader.java @@ -104,7 +104,7 @@ public final long totalTermFreq(Term term) throws IOException { } @Override - public final long getSumDocFreq(String field) throws IOException { + public final long getSumDocFreq(String field) { final Terms terms = terms(field); if (terms == null) { return 0; @@ -122,7 +122,7 @@ public final int getDocCount(String field) { } @Override - public final long getSumTotalTermFreq(String field) throws IOException { + public final long getSumTotalTermFreq(String field) { final Terms terms = terms(field); if (terms == null) { return 0; diff --git a/lucene/core/src/java/org/apache/lucene/index/MappedMultiFields.java b/lucene/core/src/java/org/apache/lucene/index/MappedMultiFields.java index fb87b54e1710..5978d63e7cb7 100644 --- a/lucene/core/src/java/org/apache/lucene/index/MappedMultiFields.java +++ b/lucene/core/src/java/org/apache/lucene/index/MappedMultiFields.java @@ -77,12 +77,12 @@ public long size() throws IOException { } @Override - public long getSumTotalTermFreq() throws IOException { + public long getSumTotalTermFreq() { throw new UnsupportedOperationException(); } @Override - public long getSumDocFreq() throws IOException { + public long getSumDocFreq() { throw new UnsupportedOperationException(); } diff --git a/lucene/core/src/java/org/apache/lucene/index/MultiTerms.java b/lucene/core/src/java/org/apache/lucene/index/MultiTerms.java index 9b4f6c48828a..819033df0cd1 100644 --- a/lucene/core/src/java/org/apache/lucene/index/MultiTerms.java +++ b/lucene/core/src/java/org/apache/lucene/index/MultiTerms.java @@ -200,7 +200,7 @@ public long size() { } @Override - public long getSumTotalTermFreq() throws IOException { + public long getSumTotalTermFreq() { long sum = 0; for (Terms terms : subs) { final long v = terms.getSumTotalTermFreq(); @@ -211,7 +211,7 @@ public long getSumTotalTermFreq() throws IOException { } @Override - public long getSumDocFreq() throws IOException { + public long getSumDocFreq() { long sum = 0; for (Terms terms : subs) { final long v = terms.getSumDocFreq(); diff --git a/lucene/core/src/java/org/apache/lucene/index/Terms.java b/lucene/core/src/java/org/apache/lucene/index/Terms.java index 3f3b5bc38026..e532ff4583d8 100644 --- a/lucene/core/src/java/org/apache/lucene/index/Terms.java +++ b/lucene/core/src/java/org/apache/lucene/index/Terms.java @@ -106,13 +106,13 @@ protected BytesRef nextSeekTerm(BytesRef term) throws IOException { * Returns the sum of {@link TermsEnum#totalTermFreq} for all terms in this field. Note that, just * like other term measures, this measure does not take deleted documents into account. */ - public abstract long getSumTotalTermFreq() throws IOException; + public abstract long getSumTotalTermFreq(); /** * Returns the sum of {@link TermsEnum#docFreq()} for all terms in this field. Note that, just * like other term measures, this measure does not take deleted documents into account. */ - public abstract long getSumDocFreq() throws IOException; + public abstract long getSumDocFreq(); /** * Returns the number of documents that have at least one term for this field. Note that, just @@ -237,12 +237,12 @@ public long size() throws IOException { } @Override - public long getSumTotalTermFreq() throws IOException { + public long getSumTotalTermFreq() { return 0; } @Override - public long getSumDocFreq() throws IOException { + public long getSumDocFreq() { return 0; } diff --git a/lucene/core/src/test/org/apache/lucene/index/TestMultiTermsEnum.java b/lucene/core/src/test/org/apache/lucene/index/TestMultiTermsEnum.java index 745526379bb3..cc5a4c63b9ef 100644 --- a/lucene/core/src/test/org/apache/lucene/index/TestMultiTermsEnum.java +++ b/lucene/core/src/test/org/apache/lucene/index/TestMultiTermsEnum.java @@ -139,12 +139,12 @@ public long size() throws IOException { } @Override - public long getSumTotalTermFreq() throws IOException { + public long getSumTotalTermFreq() { throw new UnsupportedOperationException(); } @Override - public long getSumDocFreq() throws IOException { + public long getSumDocFreq() { throw new UnsupportedOperationException(); } diff --git a/lucene/core/src/test/org/apache/lucene/util/TestDocIdSetBuilder.java b/lucene/core/src/test/org/apache/lucene/util/TestDocIdSetBuilder.java index efc8642383c4..157fb08348ea 100644 --- a/lucene/core/src/test/org/apache/lucene/util/TestDocIdSetBuilder.java +++ b/lucene/core/src/test/org/apache/lucene/util/TestDocIdSetBuilder.java @@ -283,12 +283,12 @@ public long size() throws IOException { } @Override - public long getSumTotalTermFreq() throws IOException { + public long getSumTotalTermFreq() { throw new UnsupportedOperationException(); } @Override - public long getSumDocFreq() throws IOException { + public long getSumDocFreq() { return numValues; } diff --git a/lucene/test-framework/src/java/org/apache/lucene/tests/codecs/ramonly/RAMOnlyPostingsFormat.java b/lucene/test-framework/src/java/org/apache/lucene/tests/codecs/ramonly/RAMOnlyPostingsFormat.java index c26a65f9b76b..791acf1824c5 100644 --- a/lucene/test-framework/src/java/org/apache/lucene/tests/codecs/ramonly/RAMOnlyPostingsFormat.java +++ b/lucene/test-framework/src/java/org/apache/lucene/tests/codecs/ramonly/RAMOnlyPostingsFormat.java @@ -114,7 +114,7 @@ public long getSumTotalTermFreq() { } @Override - public long getSumDocFreq() throws IOException { + public long getSumDocFreq() { return sumDocFreq; } diff --git a/lucene/test-framework/src/java/org/apache/lucene/tests/index/AssertingLeafReader.java b/lucene/test-framework/src/java/org/apache/lucene/tests/index/AssertingLeafReader.java index 8964507556b9..0c8705240492 100644 --- a/lucene/test-framework/src/java/org/apache/lucene/tests/index/AssertingLeafReader.java +++ b/lucene/test-framework/src/java/org/apache/lucene/tests/index/AssertingLeafReader.java @@ -239,7 +239,7 @@ public int getDocCount() { } @Override - public long getSumDocFreq() throws IOException { + public long getSumDocFreq() { assertThread("Terms", creationThread); final long sumDf = in.getSumDocFreq(); assert sumDf >= getDocCount(); @@ -247,7 +247,7 @@ public long getSumDocFreq() throws IOException { } @Override - public long getSumTotalTermFreq() throws IOException { + public long getSumTotalTermFreq() { assertThread("Terms", creationThread); final long sumTtf = in.getSumTotalTermFreq(); if (hasFreqs() == false) {