Skip to content

Commit aad3e10

Browse files
ginoaugustinevladak
authored andcommitted
Remove unsued code in suggester and convert for loops to stream
Signed-off-by: Gino Augustine <[email protected]>
1 parent 87507d0 commit aad3e10

File tree

5 files changed

+46
-94
lines changed

5 files changed

+46
-94
lines changed

suggester/src/main/java/org/opengrok/suggest/query/customized/CustomExactPhraseScorer.java

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,20 @@
1717
package org.opengrok.suggest.query.customized;
1818

1919
import java.io.IOException;
20-
import java.util.ArrayList;
20+
import java.util.Arrays;
2121
import java.util.HashMap;
2222
import java.util.List;
2323
import java.util.Map;
24+
import java.util.Optional;
25+
import java.util.stream.Collectors;
2426

2527
import org.apache.lucene.index.PostingsEnum;
2628
import org.apache.lucene.search.ConjunctionUtils;
2729
import org.apache.lucene.search.DocIdSetIterator;
2830
import org.apache.lucene.search.Scorer;
2931
import org.apache.lucene.search.TwoPhaseIterator;
3032
import org.apache.lucene.search.Weight;
33+
import org.jetbrains.annotations.NotNull;
3134
import org.opengrok.suggest.query.PhraseScorer;
3235
import org.opengrok.suggest.query.data.BitIntsHolder;
3336
import org.opengrok.suggest.query.data.IntsHolder;
@@ -50,9 +53,9 @@ private static class PostingsAndPosition {
5053
}
5154

5255
// custom begins – only necessary attributes
53-
private Map<Integer, IntsHolder> documentToPositionsMap = new HashMap<>();
56+
private final Map<Integer, IntsHolder> documentToPositionsMap = new HashMap<>();
5457

55-
private int offset;
58+
private final int offset;
5659

5760
private final DocIdSetIterator conjunction;
5861
private final PostingsAndPosition[] postings;
@@ -74,21 +77,22 @@ private static class PostingsAndPosition {
7477

7578
this.offset = offset; // custom
7679

77-
List<DocIdSetIterator> iterators = new ArrayList<>();
78-
List<PostingsAndPosition> postingsAndPositions = new ArrayList<>();
79-
for (CustomPhraseQuery.PostingsAndFreq posting : postings) {
80-
iterators.add(posting.postings);
81-
postingsAndPositions.add(new PostingsAndPosition(posting.postings, posting.position));
82-
}
8380
// custom begins – support for single term
84-
if (iterators.size() == 1) {
85-
conjunction = iterators.get(0);
86-
} else {
87-
conjunction = ConjunctionUtils.intersectIterators(iterators);
88-
}
81+
conjunction = generateDocIdSetIterator(Arrays.stream(postings)
82+
.map(p -> p.postings).collect(Collectors.toList()));
8983
// custom ends
9084
assert TwoPhaseIterator.unwrap(conjunction) == null;
91-
this.postings = postingsAndPositions.toArray(new PostingsAndPosition[postingsAndPositions.size()]);
85+
this.postings = Arrays.stream(postings)
86+
.map(p -> new PostingsAndPosition(p.postings, p.position))
87+
.toArray(PostingsAndPosition[]::new);
88+
}
89+
90+
private DocIdSetIterator generateDocIdSetIterator(@NotNull List<DocIdSetIterator> listOfDocIdSetIterator) {
91+
return Optional.of(listOfDocIdSetIterator)
92+
.filter(p -> p.size() > 1)
93+
.map(ConjunctionUtils::intersectIterators)
94+
.orElse(listOfDocIdSetIterator.get(0));
95+
9296
}
9397

9498
@Override

suggester/src/main/java/org/opengrok/suggest/query/customized/CustomPhraseQuery.java

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
import java.io.IOException;
4141
import java.util.Arrays;
4242
import java.util.Objects;
43-
import java.util.Set;
43+
import java.util.stream.IntStream;
4444

4545
/**
4646
* Modified Apache Lucene's {@link PhraseQuery} to allow to use {@link CustomExactPhraseScorer} and
@@ -93,27 +93,19 @@ public void setOffset(int offset) {
9393
}
9494

9595
private static int[] incrementalPositions(int length) {
96-
int[] positions = new int[length];
97-
for (int i = 0; i < length; ++i) {
98-
positions[i] = i;
99-
}
100-
return positions;
96+
return IntStream.range(0,length).toArray();
10197
}
10298

10399
private static Term[] toTerms(String field, String... termStrings) {
104-
Term[] terms = new Term[termStrings.length];
105-
for (int i = 0; i < terms.length; ++i) {
106-
terms[i] = new Term(field, termStrings[i]);
107-
}
108-
return terms;
100+
return Arrays.stream(termStrings)
101+
.map(termString -> new Term(field,termString))
102+
.toArray(Term[]::new);
109103
}
110104

111105
private static Term[] toTerms(String field, BytesRef... termBytes) {
112-
Term[] terms = new Term[termBytes.length];
113-
for (int i = 0; i < terms.length; ++i) {
114-
terms[i] = new Term(field, termBytes[i]);
115-
}
116-
return terms;
106+
return Arrays.stream(termBytes)
107+
.map(termByte -> new Term(field,termByte))
108+
.toArray(Term[]::new);
117109
}
118110

119111
/**
@@ -251,9 +243,9 @@ public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float bo
251243

252244
private static class CustomPhraseWeight extends Weight {
253245

254-
private CustomPhraseQuery query;
246+
private final CustomPhraseQuery query;
255247

256-
private TermStates[] states;
248+
private final TermStates[] states;
257249

258250
CustomPhraseWeight(IndexSearcher searcher, CustomPhraseQuery query) throws IOException {
259251
super(query);
@@ -268,11 +260,6 @@ private static class CustomPhraseWeight extends Weight {
268260
}
269261
}
270262

271-
@Deprecated
272-
public void extractTerms(Set<Term> set) {
273-
throw new UnsupportedOperationException();
274-
}
275-
276263
@Override
277264
public Explanation explain(LeafReaderContext leafReaderContext, int i) {
278265
throw new UnsupportedOperationException();

suggester/src/main/java/org/opengrok/suggest/query/customized/CustomSloppyPhraseScorer.java

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@
2323
import java.util.HashMap;
2424
import java.util.HashSet;
2525
import java.util.LinkedHashMap;
26+
import java.util.List;
2627
import java.util.Map;
28+
import java.util.Optional;
29+
import java.util.stream.Collectors;
2730

2831
import org.apache.lucene.index.Term;
2932
import org.apache.lucene.search.ConjunctionUtils;
@@ -32,6 +35,7 @@
3235
import org.apache.lucene.search.TwoPhaseIterator;
3336
import org.apache.lucene.search.Weight;
3437
import org.apache.lucene.util.FixedBitSet;
38+
import org.jetbrains.annotations.NotNull;
3539
import org.opengrok.suggest.query.PhraseScorer;
3640
import org.opengrok.suggest.query.data.BitIntsHolder;
3741
import org.opengrok.suggest.query.data.IntsHolder;
@@ -60,9 +64,9 @@ final class CustomSloppyPhraseScorer extends Scorer implements PhraseScorer { //
6064
private PhrasePositions[] rptStack; // temporary stack for switching colliding repeating pps
6165

6266
// custom begins
63-
private int offset;
67+
private final int offset;
6468

65-
private Map<Integer, IntsHolder> documentsToPositionsMap = new HashMap<>();
69+
private final Map<Integer, IntsHolder> documentsToPositionsMap = new HashMap<>();
6670
// custom ends
6771

6872
// custom – constructor parameters
@@ -84,20 +88,24 @@ final class CustomSloppyPhraseScorer extends Scorer implements PhraseScorer { //
8488
this.offset = offset; // custom
8589
this.numPostings = postings.length;
8690
pq = new PhraseQueue(postings.length);
87-
DocIdSetIterator[] iterators = new DocIdSetIterator[postings.length];
8891
phrasePositions = new PhrasePositions[postings.length];
8992
for (int i = 0; i < postings.length; ++i) {
90-
iterators[i] = postings[i].postings;
9193
phrasePositions[i] = new PhrasePositions(postings[i].postings, postings[i].position, i, postings[i].terms);
9294
}
9395
// custom begins – support for single term
94-
if (iterators.length == 1) {
95-
conjunction = iterators[0];
96-
} else {
97-
conjunction = ConjunctionUtils.intersectIterators(Arrays.asList(iterators));
98-
}
96+
conjunction = generateDocIdSetIterator(Arrays.stream(postings)
97+
.map(p -> p.postings).collect(Collectors.toList()));
9998
// custom ends
10099
assert TwoPhaseIterator.unwrap(conjunction) == null;
100+
101+
}
102+
103+
private DocIdSetIterator generateDocIdSetIterator(@NotNull List<DocIdSetIterator> listOfDocIdSetIterator) {
104+
return Optional.of(listOfDocIdSetIterator)
105+
.filter(p -> p.size() > 1)
106+
.map(ConjunctionUtils::intersectIterators)
107+
.orElse(listOfDocIdSetIterator.get(0));
108+
101109
}
102110

103111
/**

suggester/src/main/java/org/opengrok/suggest/query/customized/PhrasePositions.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ final class PhrasePositions {
3333
int offset; // position in phrase
3434
final int ord; // unique across all PhrasePositions instances
3535
final PostingsEnum postings; // stream of docs & positions
36-
PhrasePositions next; // used to make lists
3736
int rptGroup = -1; // >=0 indicates that this is a repeating PP
3837
int rptInd; // index in the rptGroup
3938
final Term[] terms; // for repetitions initialization

suggester/src/main/java/org/opengrok/suggest/query/data/HashIntsHolder.java

Lines changed: 0 additions & 46 deletions
This file was deleted.

0 commit comments

Comments
 (0)