Upgrade to lucene-8.5.0-snapshot-3333ce7da6d (#51749)
Backport for #51327
This commit is contained in:
parent
1a9e7b2d69
commit
42b885f050
|
@ -1,5 +1,5 @@
|
||||||
elasticsearch = 7.7.0
|
elasticsearch = 7.7.0
|
||||||
lucene = 8.4.0
|
lucene = 8.5.0-snapshot-3333ce7da6d
|
||||||
|
|
||||||
bundled_jdk_vendor = adoptopenjdk
|
bundled_jdk_vendor = adoptopenjdk
|
||||||
bundled_jdk = 13.0.2+8
|
bundled_jdk = 13.0.2+8
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
|
||||||
include::{asciidoc-dir}/../../shared/versions/stack/{source_branch}.asciidoc[]
|
include::{asciidoc-dir}/../../shared/versions/stack/{source_branch}.asciidoc[]
|
||||||
|
|
||||||
:lucene_version: 8.4.0
|
:lucene_version: 8.5.0
|
||||||
:lucene_version_path: 8_4_0
|
:lucene_version_path: 8_5_0
|
||||||
:jdk: 1.8.0_131
|
:jdk: 1.8.0_131
|
||||||
:jdk_major: 8
|
:jdk_major: 8
|
||||||
:build_flavor: default
|
:build_flavor: default
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
2aeb62a1a6278c2707b9a491c74a102c1f11f06e
|
|
|
@ -0,0 +1 @@
|
||||||
|
f8ccecbafaae02529259336529be9c975df8f042
|
|
@ -1 +0,0 @@
|
||||||
8e02317f9253512b0d4fc8d5c41e2b8c647955d2
|
|
|
@ -0,0 +1 @@
|
||||||
|
dd52e75c39faeeae458675f42c1952554dbd14c6
|
|
@ -1 +0,0 @@
|
||||||
5ccb38f67ac1895d25c7c84abe8805aef5526790
|
|
|
@ -0,0 +1 @@
|
||||||
|
966d7f88e4ce01e70e092eeb1f73d46af415c61d
|
|
@ -1 +0,0 @@
|
||||||
7f57aff713c474ffb6aba1bae6d9374a1a184114
|
|
|
@ -0,0 +1 @@
|
||||||
|
396e3966f02dde019f269bf4478e7bb51330ca48
|
|
@ -1 +0,0 @@
|
||||||
e47cb4efd4e9e071e0563dd44f1759ea1e712ca7
|
|
|
@ -0,0 +1 @@
|
||||||
|
aeb18b5d73d6304cb77c53b44d29be9a12f37621
|
|
@ -1 +0,0 @@
|
||||||
39a8ecf0d875630d04972208e00adf930500f52b
|
|
|
@ -0,0 +1 @@
|
||||||
|
f080232d355acb6728f45a4bc400080edcd0a900
|
|
@ -1 +0,0 @@
|
||||||
c9815fc970936940ab08880e0d34c8cff169ee4d
|
|
|
@ -0,0 +1 @@
|
||||||
|
fbe54b98515f263e1c60b20cb2178b401e03b633
|
|
@ -1 +0,0 @@
|
||||||
f389d3873ee33b5dd432077e201a541c7a16772a
|
|
|
@ -0,0 +1 @@
|
||||||
|
890953e7f21780dc3f2cc9b77cdbc96092bf5266
|
|
@ -96,7 +96,6 @@ dependencies {
|
||||||
compile "org.apache.lucene:lucene-queries:${versions.lucene}"
|
compile "org.apache.lucene:lucene-queries:${versions.lucene}"
|
||||||
compile "org.apache.lucene:lucene-queryparser:${versions.lucene}"
|
compile "org.apache.lucene:lucene-queryparser:${versions.lucene}"
|
||||||
compile "org.apache.lucene:lucene-sandbox:${versions.lucene}"
|
compile "org.apache.lucene:lucene-sandbox:${versions.lucene}"
|
||||||
compile "org.apache.lucene:lucene-spatial:${versions.lucene}"
|
|
||||||
compile "org.apache.lucene:lucene-spatial-extras:${versions.lucene}"
|
compile "org.apache.lucene:lucene-spatial-extras:${versions.lucene}"
|
||||||
compile "org.apache.lucene:lucene-spatial3d:${versions.lucene}"
|
compile "org.apache.lucene:lucene-spatial3d:${versions.lucene}"
|
||||||
compile "org.apache.lucene:lucene-suggest:${versions.lucene}"
|
compile "org.apache.lucene:lucene-suggest:${versions.lucene}"
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
79d7792942fa009316de2d7d1a4d7e8b33548947
|
|
|
@ -0,0 +1 @@
|
||||||
|
3bfaed62b80d02bb697a7bd69e06441860d5ccda
|
|
@ -1 +0,0 @@
|
||||||
6604030f7da573a8c00641f9c7deef6c143b6022
|
|
|
@ -0,0 +1 @@
|
||||||
|
e57bca7c4e596914d2eb2b7fedd06f24bffd02a9
|
|
@ -1 +0,0 @@
|
||||||
2746f9ec96f9ce3a345b11f03751136073f7869f
|
|
|
@ -0,0 +1 @@
|
||||||
|
872d97891b63a07475f2ad54b5cd2532ca949b9f
|
|
@ -1 +0,0 @@
|
||||||
f73773fc39d43df7661609b9f7a733ddfd091af7
|
|
|
@ -0,0 +1 @@
|
||||||
|
ab54d212db5d76d210d632648da23d659b95c23c
|
|
@ -1 +0,0 @@
|
||||||
be8a20787124cf52c56c5928ef970df2d8a26f51
|
|
|
@ -0,0 +1 @@
|
||||||
|
81ded52ae9e7dfe7a494d1f0c4ae206d245e4f68
|
|
@ -1 +0,0 @@
|
||||||
8ec1dce97ba5b616e165068225bba873179482e9
|
|
|
@ -0,0 +1 @@
|
||||||
|
09888a8ee3f294b64686e6ce1c838e4b715af3ff
|
|
@ -1 +0,0 @@
|
||||||
dff1e225fe6bfdf7853663bc48831e9714bf035e
|
|
|
@ -0,0 +1 @@
|
||||||
|
dc991eab909c597c357096ee8a8c1596d6336e4f
|
|
@ -1 +0,0 @@
|
||||||
ebe2549568386d5c289ec0eb738172f1a0445259
|
|
|
@ -0,0 +1 @@
|
||||||
|
2121b2867debc14ff5263fef0228bcbc00ecfdb3
|
|
@ -1 +0,0 @@
|
||||||
9d5fdc88f91586bf5d1afa13b9a77302c39b5e7c
|
|
|
@ -0,0 +1 @@
|
||||||
|
c3c4baa42396f44b4be1297e02530115fc77db0c
|
|
@ -1 +0,0 @@
|
||||||
ab7c7c3c823cb2f8fb1b54fdc82b3e133e8e8344
|
|
|
@ -0,0 +1 @@
|
||||||
|
c9d2393c5587c3948ebfef2bbc864e49a42d64ae
|
|
@ -1 +0,0 @@
|
||||||
bc34429b8d1a620c58639f376bee9ba425a035d3
|
|
|
@ -0,0 +1 @@
|
||||||
|
76f51eb693a3befa3ff56cca16b111bcaa84a5f9
|
|
@ -1 +0,0 @@
|
||||||
0bc8d9f00bd34806bc82d01390855ef9dcbea85b
|
|
|
@ -1 +0,0 @@
|
||||||
a1e978879d35af3590549437b80679b5c00f27d6
|
|
|
@ -0,0 +1 @@
|
||||||
|
3fbd17d1ba11874cbf6dfb766fd41e4ac1ed1289
|
|
@ -1 +0,0 @@
|
||||||
1000c919125bb13f265b101341c34bb5af814fd3
|
|
|
@ -0,0 +1 @@
|
||||||
|
bf7aad63c08231f24e9108eb7262cd1950a96158
|
|
@ -1 +0,0 @@
|
||||||
488e5cfdd4d2d30b161fc45819a82a6984eb0f99
|
|
|
@ -0,0 +1 @@
|
||||||
|
5e24487295d4c927e75d3ea0b7f6724ee9043b80
|
|
@ -21,6 +21,11 @@ package org.apache.lucene.search.uhighlight;
|
||||||
|
|
||||||
import java.text.BreakIterator;
|
import java.text.BreakIterator;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
import java.util.PriorityQueue;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.io.IOException;
|
||||||
|
import org.apache.lucene.util.BytesRef;
|
||||||
|
|
||||||
import static org.apache.lucene.search.uhighlight.CustomUnifiedHighlighter.MULTIVAL_SEP_CHAR;
|
import static org.apache.lucene.search.uhighlight.CustomUnifiedHighlighter.MULTIVAL_SEP_CHAR;
|
||||||
|
|
||||||
|
@ -76,4 +81,84 @@ class CustomFieldHighlighter extends FieldHighlighter {
|
||||||
}
|
}
|
||||||
return EMPTY_PASSAGE;
|
return EMPTY_PASSAGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: use FieldHighlighter::highlightOffsetsEnums and modify BoundedBreakIteratorScanner to work with it
|
||||||
|
// LUCENE-9093 modified how FieldHighlighter breaks texts into passages,
|
||||||
|
// which doesn't work well with BoundedBreakIteratorScanner
|
||||||
|
// This is the copy of highlightOffsetsEnums before LUCENE-9093.
|
||||||
|
@Override
|
||||||
|
protected Passage[] highlightOffsetsEnums(OffsetsEnum off)
|
||||||
|
throws IOException {
|
||||||
|
|
||||||
|
final int contentLength = this.breakIterator.getText().getEndIndex();
|
||||||
|
|
||||||
|
if (off.nextPosition() == false) {
|
||||||
|
return new Passage[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
PriorityQueue<Passage> passageQueue = new PriorityQueue<>(Math.min(64, maxPassages + 1), (left, right) -> {
|
||||||
|
if (left.getScore() < right.getScore()) {
|
||||||
|
return -1;
|
||||||
|
} else if (left.getScore() > right.getScore()) {
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
return left.getStartOffset() - right.getStartOffset();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Passage passage = new Passage(); // the current passage in-progress. Will either get reset or added to queue.
|
||||||
|
|
||||||
|
do {
|
||||||
|
int start = off.startOffset();
|
||||||
|
if (start == -1) {
|
||||||
|
throw new IllegalArgumentException("field '" + field + "' was indexed without offsets, cannot highlight");
|
||||||
|
}
|
||||||
|
int end = off.endOffset();
|
||||||
|
if (start < contentLength && end > contentLength) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// See if this term should be part of a new passage.
|
||||||
|
if (start >= passage.getEndOffset()) {
|
||||||
|
passage = maybeAddPassage(passageQueue, passageScorer, passage, contentLength);
|
||||||
|
// if we exceed limit, we are done
|
||||||
|
if (start >= contentLength) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
passage.setStartOffset(Math.max(this.breakIterator.preceding(start + 1), 0));
|
||||||
|
passage.setEndOffset(Math.min(this.breakIterator.following(start), contentLength));
|
||||||
|
}
|
||||||
|
// Add this term to the passage.
|
||||||
|
BytesRef term = off.getTerm();// a reference; safe to refer to
|
||||||
|
assert term != null;
|
||||||
|
passage.addMatch(start, end, term, off.freq());
|
||||||
|
} while (off.nextPosition());
|
||||||
|
maybeAddPassage(passageQueue, passageScorer, passage, contentLength);
|
||||||
|
|
||||||
|
Passage[] passages = passageQueue.toArray(new Passage[passageQueue.size()]);
|
||||||
|
// sort in ascending order
|
||||||
|
Arrays.sort(passages, Comparator.comparingInt(Passage::getStartOffset));
|
||||||
|
return passages;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: use FieldHighlighter::maybeAddPassage
|
||||||
|
// After removing CustomFieldHighlighter::highlightOffsetsEnums, remove this method as well.
|
||||||
|
private Passage maybeAddPassage(PriorityQueue<Passage> passageQueue, PassageScorer scorer, Passage passage, int contentLength) {
|
||||||
|
if (passage.getStartOffset() == -1) {
|
||||||
|
// empty passage, we can ignore it
|
||||||
|
return passage;
|
||||||
|
}
|
||||||
|
passage.setScore(scorer.score(passage, contentLength));
|
||||||
|
// new sentence: first add 'passage' to queue
|
||||||
|
if (passageQueue.size() == maxPassages && passage.getScore() < passageQueue.peek().getScore()) {
|
||||||
|
passage.reset(); // can't compete, just reset it
|
||||||
|
} else {
|
||||||
|
passageQueue.offer(passage);
|
||||||
|
if (passageQueue.size() > maxPassages) {
|
||||||
|
passage = passageQueue.poll();
|
||||||
|
passage.reset();
|
||||||
|
} else {
|
||||||
|
passage = new Passage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return passage;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -129,7 +129,7 @@ public class Version implements Comparable<Version>, ToXContentFragment {
|
||||||
public static final Version V_7_5_2 = new Version(7050299, org.apache.lucene.util.Version.LUCENE_8_3_0);
|
public static final Version V_7_5_2 = new Version(7050299, org.apache.lucene.util.Version.LUCENE_8_3_0);
|
||||||
public static final Version V_7_5_3 = new Version(7050399, org.apache.lucene.util.Version.LUCENE_8_3_0);
|
public static final Version V_7_5_3 = new Version(7050399, org.apache.lucene.util.Version.LUCENE_8_3_0);
|
||||||
public static final Version V_7_6_0 = new Version(7060099, org.apache.lucene.util.Version.LUCENE_8_4_0);
|
public static final Version V_7_6_0 = new Version(7060099, org.apache.lucene.util.Version.LUCENE_8_4_0);
|
||||||
public static final Version V_7_7_0 = new Version(7070099, org.apache.lucene.util.Version.LUCENE_8_4_0);
|
public static final Version V_7_7_0 = new Version(7070099, org.apache.lucene.util.Version.LUCENE_8_5_0);
|
||||||
public static final Version CURRENT = V_7_7_0;
|
public static final Version CURRENT = V_7_7_0;
|
||||||
|
|
||||||
private static final ImmutableOpenIntMap<Version> idToVersion;
|
private static final ImmutableOpenIntMap<Version> idToVersion;
|
||||||
|
|
|
@ -797,8 +797,8 @@ public abstract class IntervalsSourceProvider implements NamedWriteable, ToXCont
|
||||||
BytesRef normalizedTerm = analyzer.normalize(fieldType.name(), term);
|
BytesRef normalizedTerm = analyzer.normalize(fieldType.name(), term);
|
||||||
FuzzyQuery fq = new FuzzyQuery(new Term(fieldType.name(), normalizedTerm),
|
FuzzyQuery fq = new FuzzyQuery(new Term(fieldType.name(), normalizedTerm),
|
||||||
fuzziness.asDistance(term), prefixLength, 128, transpositions);
|
fuzziness.asDistance(term), prefixLength, 128, transpositions);
|
||||||
CompiledAutomaton ca = new CompiledAutomaton(fq.toAutomaton());
|
CompiledAutomaton[] automata = fq.getAutomata();
|
||||||
source = XIntervals.multiterm(ca, term);
|
source = XIntervals.multiterm(automata[automata.length - 1], term);
|
||||||
if (useField != null) {
|
if (useField != null) {
|
||||||
source = Intervals.fixField(useField, source);
|
source = Intervals.fixField(useField, source);
|
||||||
}
|
}
|
||||||
|
|
|
@ -550,7 +550,8 @@ public class IntervalQueryBuilderTests extends AbstractQueryTestCase<IntervalQue
|
||||||
|
|
||||||
private static IntervalsSource buildFuzzySource(String term, String label, int prefixLength, boolean transpositions, int editDistance) {
|
private static IntervalsSource buildFuzzySource(String term, String label, int prefixLength, boolean transpositions, int editDistance) {
|
||||||
FuzzyQuery fq = new FuzzyQuery(new Term("field", term), editDistance, prefixLength, 128, transpositions);
|
FuzzyQuery fq = new FuzzyQuery(new Term("field", term), editDistance, prefixLength, 128, transpositions);
|
||||||
return XIntervals.multiterm(new CompiledAutomaton(fq.toAutomaton()), label);
|
CompiledAutomaton[] automata = fq.getAutomata();
|
||||||
|
return XIntervals.multiterm(automata[automata.length - 1], label);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testFuzzy() throws IOException {
|
public void testFuzzy() throws IOException {
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
2746f9ec96f9ce3a345b11f03751136073f7869f
|
|
|
@ -0,0 +1 @@
|
||||||
|
872d97891b63a07475f2ad54b5cd2532ca949b9f
|
Loading…
Reference in New Issue