diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt index ac3d0d420ead..9e030e9c6fbf 100644 --- a/lucene/CHANGES.txt +++ b/lucene/CHANGES.txt @@ -96,7 +96,8 @@ API Changes * GITHUB#: Add junit5/jupiter support to the test-framework module. (Dawid Weiss) * GITHUB#16052: Remove IOException from LeafReader#getPointValues, LeafReader#terms, - LeafReader#getDocCount signatures. (Ignacio Vera) + LeafReader#getDocCount, LeafReader#getSumDocFreq and LeafReader#getSumTotalTermFreq + signatures. (Ignacio Vera) * GITHUB#16388: Remove IOException from LeafReader#getDocValuesSkipper signature. (Alan Woodward) 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 2c3767bb6164..5404e5aa54a6 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 @@ -288,7 +288,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 2e3ef1c02207..866529730627 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 @@ -236,12 +236,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 06c9ab77d039..a46b8be75013 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 @@ -247,7 +247,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 afa82ea2479b..b45139d81fdf 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 @@ -770,7 +770,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 3fcfea27fd1d..114b2142e852 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; @@ -297,18 +298,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 05774f803b34..fd058ed5c836 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 @@ -1018,12 +1018,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 88a89bef3c87..0e0e76921da3 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 7d7465614616..e55ab27afc26 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 f6c8f8f53f5e..4b5106864ab5 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 d5b5cdb28ce2..284942f5151a 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 7c76d16fdf45..bf1c6e00647d 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 @@ -115,7 +115,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 98417d47d824..9ab56dc17dab 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) {