Bug 530723 - Upgrade lucene indexer to 7.1
Change-Id: I5fe6a33d0ca9f55ebd300fbff9dfc72117fe57f0
Signed-off-by: Dawid Pakuła <zulus@w3des.net>
diff --git a/core/plugins/org.eclipse.dltk.core.index.lucene/META-INF/MANIFEST.MF b/core/plugins/org.eclipse.dltk.core.index.lucene/META-INF/MANIFEST.MF
index 94ea1e3..a8f96ac 100644
--- a/core/plugins/org.eclipse.dltk.core.index.lucene/META-INF/MANIFEST.MF
+++ b/core/plugins/org.eclipse.dltk.core.index.lucene/META-INF/MANIFEST.MF
@@ -9,9 +9,9 @@
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.core.resources,
org.eclipse.dltk.core,
- org.apache.lucene.core;bundle-version="[6.1.0,7.0.0)",
- org.apache.lucene.misc;bundle-version="[6.1.0,7.0.0)",
- org.apache.lucene.analyzers-common;bundle-version="[6.1.0,7.0.0)"
+ org.apache.lucene.core;bundle-version="[7.1.0,7.2.0)",
+ org.apache.lucene.misc;bundle-version="[7.1.0,7.2.0)",
+ org.apache.lucene.analyzers-common;bundle-version="[7.1.0,7.2.0)"
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.dltk.core.index.lucene
diff --git a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/BitFlagsQuery.java b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/BitFlagsQuery.java
index 6df98d7..3de57ac 100644
--- a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/BitFlagsQuery.java
+++ b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/BitFlagsQuery.java
@@ -12,22 +12,16 @@
import java.io.IOException;
import java.text.MessageFormat;
-import java.util.Set;
-import org.apache.lucene.index.DocValues;
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.NumericDocValues;
-import org.apache.lucene.index.Term;
import org.apache.lucene.search.ConstantScoreScorer;
-import org.apache.lucene.search.DocIdSet;
-import org.apache.lucene.search.DocIdSetIterator;
-import org.apache.lucene.search.DocValuesDocIdSet;
-import org.apache.lucene.search.Explanation;
+import org.apache.lucene.search.ConstantScoreWeight;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.Scorer;
+import org.apache.lucene.search.TwoPhaseIterator;
import org.apache.lucene.search.Weight;
-import org.apache.lucene.util.Bits;
import org.eclipse.dltk.ast.Modifiers;
/**
@@ -79,84 +73,39 @@
}
@Override
- public Weight createWeight(IndexSearcher searcher, boolean needsScores)
- throws IOException {
- return new Weight(this) {
- @Override
- public void extractTerms(Set<Term> terms) {
- // Ignore
- }
-
- @Override
- public void normalize(float norm, float topLevelBoost) {
- // Ignore
- }
-
- @Override
- public float getValueForNormalization() throws IOException {
- return 0;
- }
-
- @Override
- public Explanation explain(LeafReaderContext context, int doc)
- throws IOException {
- final Scorer scorer = scorer(context);
- final boolean match = (scorer != null
- && scorer.iterator().advance(doc) == doc);
- if (match) {
- assert scorer.score() == 0;
- return Explanation.match(0, "Match on id" + doc); //$NON-NLS-1$
- } else {
- return Explanation.match(0, "No match on id" + doc); //$NON-NLS-1$
- }
- }
+ public Weight createWeight(IndexSearcher searcher, boolean needsScores,
+ float boost) throws IOException {
+ return new ConstantScoreWeight(this, 10) {
@Override
public Scorer scorer(LeafReaderContext context) throws IOException {
- final DocIdSet set = getDocIdSet(context,
- context.reader().getLiveDocs());
- if (set == null) {
+
+ NumericDocValues fields = context.reader()
+ .getNumericDocValues(IndexFields.NDV_FLAGS);
+ if (fields == null) {
return null;
}
- final DocIdSetIterator iterator = set.iterator();
- if (iterator == null) {
- return null;
- }
- return new ConstantScoreScorer(this, 0, iterator);
- }
- };
+ TwoPhaseIterator iterator = new TwoPhaseIterator(fields) {
- }
+ @Override
+ public boolean matches() throws IOException {
+ long flags = fields.longValue();
+ if (fTrueFlags != 0 && (flags & fTrueFlags) == 0) {
+ return false;
+ }
+ if (fFalseFlags != 0 && (flags & fFalseFlags) != 0) {
+ return false;
+ }
+ return true;
+ }
- /**
- * Finds and returns matching doc ID set.
- *
- * @param context
- * @param acceptDocs
- * @return matching doc ID set
- * @throws IOException
- */
- protected DocIdSet getDocIdSet(final LeafReaderContext context,
- Bits acceptDocs) throws IOException {
- final NumericDocValues numDocValues = DocValues
- .getNumeric(context.reader(), IndexFields.NDV_FLAGS);
- return new DocValuesDocIdSet(context.reader().maxDoc(), acceptDocs) {
- @Override
- protected boolean matchDoc(int doc) {
- long flags = numDocValues.get(doc);
- if (fTrueFlags != 0) {
- if ((flags & fTrueFlags) == 0) {
- return false;
+ @Override
+ public float matchCost() {
+ return 2;
}
- }
- if (fFalseFlags != 0) {
- if ((flags & fFalseFlags) != 0) {
- return false;
- }
- }
- return true;
+ };
+ return new ConstantScoreScorer(this, 10, iterator);
}
};
}
-
}
diff --git a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/DocumentFactory.java b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/DocumentFactory.java
index f63691d..5db6b1b 100644
--- a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/DocumentFactory.java
+++ b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/DocumentFactory.java
@@ -10,7 +10,23 @@
*******************************************************************************/
package org.eclipse.dltk.internal.core.index.lucene;
-import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.*;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.BDV_DOC;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.BDV_ELEMENT_NAME;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.BDV_METADATA;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.BDV_PARENT;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.BDV_PATH;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.BDV_QUALIFIER;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.F_CC_NAME;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.F_ELEMENT_NAME_LC;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.F_PARENT;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.F_PATH;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.F_QUALIFIER;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.NDV_FLAGS;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.NDV_LENGTH;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.NDV_NAME_LENGTH;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.NDV_NAME_OFFSET;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.NDV_OFFSET;
+import static org.eclipse.dltk.internal.core.index.lucene.IndexFields.NDV_TIMESTAMP;
import org.apache.lucene.document.BinaryDocValuesField;
import org.apache.lucene.document.Document;
@@ -140,7 +156,8 @@
}
}
camelCaseName = camelCaseNameBuf.length() > 0
- ? camelCaseNameBuf.toString() : null;
+ ? camelCaseNameBuf.toString()
+ : null;
addStringEntry(doc, F_CC_NAME, camelCaseName, false);
}
diff --git a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/LuceneIndexer.java b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/LuceneIndexer.java
index c73b608..badda0b 100644
--- a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/LuceneIndexer.java
+++ b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/LuceneIndexer.java
@@ -14,9 +14,8 @@
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
-import java.util.Set;
-import org.apache.lucene.document.Document;
+import org.apache.lucene.index.BinaryDocValues;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.LeafReader;
import org.apache.lucene.index.LeafReaderContext;
@@ -50,9 +49,6 @@
private static final class TimestampsCollector implements Collector {
- private static final Set<String> fFields = Collections
- .singleton(IndexFields.F_PATH);
-
private final Map<String, Long> fResult;
public TimestampsCollector(Map<String, Long> result) {
@@ -68,19 +64,22 @@
public LeafCollector getLeafCollector(LeafReaderContext context)
throws IOException {
final LeafReader reader = context.reader();
- final NumericDocValues timestampField = context.reader()
+ final NumericDocValues timestampField = reader
.getNumericDocValues(IndexFields.NDV_TIMESTAMP);
+ final BinaryDocValues pathField = reader
+ .getBinaryDocValues(IndexFields.F_PATH);
return new LeafCollector() {
@Override
public void setScorer(Scorer scorer) throws IOException {
- // ignore
}
@Override
public void collect(int docId) throws IOException {
- Document document = reader.document(docId, fFields);
- fResult.put(document.get(IndexFields.F_PATH),
- timestampField.get(docId));
+ if (timestampField.advanceExact(docId)
+ && pathField.advanceExact(docId)) {
+ fResult.put(pathField.binaryValue().utf8ToString(),
+ timestampField.longValue());
+ }
}
};
}
diff --git a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/LuceneSearchEngine.java b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/LuceneSearchEngine.java
index 58187b5..8c843a9 100644
--- a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/LuceneSearchEngine.java
+++ b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/LuceneSearchEngine.java
@@ -130,7 +130,7 @@
@Override
public boolean needsScores() {
- return true;
+ return false;
}
@Override
@@ -152,9 +152,9 @@
}
}
return new LeafCollector() {
+
@Override
public void setScorer(Scorer scorer) throws IOException {
- // ignore
}
@Override
@@ -179,10 +179,18 @@
getStringValue(BDV_METADATA, docId)));
}
- private int getNumericValue(String field, int docId) {
+ private long getNumericValue(String field, int docId) {
NumericDocValues docValues = fDocNumericValues.get(field);
if (docValues != null) {
- return (int) docValues.get(docId);
+ try {
+ docValues.advanceExact(docId);
+ if (!docValues.advanceExact(docId)) {
+ return 0;
+ }
+ return docValues.longValue();
+ } catch (IOException e) {
+ Logger.logException(e);
+ }
}
return 0;
}
@@ -190,12 +198,21 @@
private String getStringValue(String field, int docId) {
BinaryDocValues docValues = fDocBinaryValues.get(field);
if (docValues != null) {
- BytesRef bytesRef = docValues.get(docId);
- if (bytesRef.length > 0)
- return bytesRef.utf8ToString();
+ try {
+ if (!docValues.advanceExact(docId)) {
+ return null;
+ }
+ BytesRef bytesRef = docValues.binaryValue();
+ if (bytesRef.length > 0)
+ return bytesRef.utf8ToString();
+ } catch (IOException e) {
+ Logger.logException(e);
+ }
+
}
return null;
}
+
}
@Override
@@ -291,8 +308,9 @@
List<SearchMatch> results = new ArrayList<>();
for (String container : SearchScope.getContainers(scope)) {
SearcherManager searcherManager = LuceneManager.INSTANCE
- .findIndexSearcher(container, searchForRefs
- ? IndexType.REFERENCES : IndexType.DECLARATIONS,
+ .findIndexSearcher(container,
+ searchForRefs ? IndexType.REFERENCES
+ : IndexType.DECLARATIONS,
elementType);
try {
indexSearcher = searcherManager.acquire();
diff --git a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/SearchMatch.java b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/SearchMatch.java
index 96194c3..441cb9d 100644
--- a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/SearchMatch.java
+++ b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/SearchMatch.java
@@ -48,18 +48,18 @@
* @param doc
* @param metadata
*/
- public SearchMatch(String container, int elementType, int offset,
- int length, int nameOffset, int nameLength, int flags,
+ public SearchMatch(String container, long elementType, long offset,
+ long length, long nameOffset, long nameLength, long flags,
String elementName, String path, String parent, String qualifier,
String doc, String metadata) {
super();
this.container = container;
- this.elementType = elementType;
- this.offset = offset;
- this.length = length;
- this.nameOffset = nameOffset;
- this.nameLength = nameLength;
- this.flags = flags;
+ this.elementType = (int) elementType;
+ this.offset = (int) offset;
+ this.length = (int) length;
+ this.nameOffset = (int) nameOffset;
+ this.nameLength = (int) nameLength;
+ this.flags = (int) flags;
this.elementName = elementName;
this.path = path;
this.parent = parent;
diff --git a/core/releng/org.eclipse.dltk.core.targetplatform/DLTK-Neon-4.6.target b/core/releng/org.eclipse.dltk.core.targetplatform/DLTK-Neon-4.6.target
index d26356f..72ac687 100644
--- a/core/releng/org.eclipse.dltk.core.targetplatform/DLTK-Neon-4.6.target
+++ b/core/releng/org.eclipse.dltk.core.targetplatform/DLTK-Neon-4.6.target
@@ -9,12 +9,12 @@
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
<unit id="com.google.guava" version="21.0.0.v20170206-1425"/>
<unit id="com.google.guava.source" version="21.0.0.v20170206-1425"/>
-<unit id="org.apache.lucene.analyzers-common" version="6.1.0.v20161115-1612"/>
-<unit id="org.apache.lucene.analyzers-common.source" version="6.1.0.v20161115-1612"/>
-<unit id="org.apache.lucene.core" version="6.1.0.v20170814-1820"/>
-<unit id="org.apache.lucene.core.source" version="6.1.0.v20170814-1820"/>
-<unit id="org.apache.lucene.misc" version="6.1.0.v20161115-1612"/>
-<unit id="org.apache.lucene.misc.source" version="6.1.0.v20161115-1612"/>
+<unit id="org.apache.lucene.analyzers-common" version="7.1.0.v20180122-2126"/>
+<unit id="org.apache.lucene.analyzers-common.source" version="7.1.0.v20180122-2126"/>
+<unit id="org.apache.lucene.core" version="7.1.0.v20171214-1510"/>
+<unit id="org.apache.lucene.core.source" version="7.1.0.v20171214-1510"/>
+<unit id="org.apache.lucene.misc" version="7.1.0.v20180220-1923"/>
+<unit id="org.apache.lucene.misc.source" version="7.1.0.v20180220-1923"/>
<unit id="org.h2" version="1.3.168.v201212121212"/>
<unit id="org.h2.source" version="1.3.168.v201212121212"/>
<unit id="org.hamcrest" version="0.0.0"/>
@@ -27,7 +27,7 @@
<unit id="org.junit.source" version="4.12.0.v201504281640"/>
<unit id="org.mockito" version="0.0.0"/>
<unit id="org.objenesis" version="0.0.0"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/M20170818183741/repository/"/>
+<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/S20180302171354/repository/"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
<unit id="org.eclipse.emf.sdk.feature.group" version="0.0.0"/>
diff --git a/core/releng/org.eclipse.dltk.core.targetplatform/DLTK-Oxygen-4.7.target b/core/releng/org.eclipse.dltk.core.targetplatform/DLTK-Oxygen-4.7.target
index 71b1383..3e297b9 100644
--- a/core/releng/org.eclipse.dltk.core.targetplatform/DLTK-Oxygen-4.7.target
+++ b/core/releng/org.eclipse.dltk.core.targetplatform/DLTK-Oxygen-4.7.target
@@ -9,12 +9,12 @@
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
<unit id="com.google.guava" version="21.0.0.v20170206-1425"/>
<unit id="com.google.guava.source" version="21.0.0.v20170206-1425"/>
-<unit id="org.apache.lucene.analyzers-common" version="6.1.0.v20161115-1612"/>
-<unit id="org.apache.lucene.analyzers-common.source" version="6.1.0.v20161115-1612"/>
-<unit id="org.apache.lucene.core" version="6.1.0.v20170814-1820"/>
-<unit id="org.apache.lucene.core.source" version="6.1.0.v20170814-1820"/>
-<unit id="org.apache.lucene.misc" version="6.1.0.v20161115-1612"/>
-<unit id="org.apache.lucene.misc.source" version="6.1.0.v20161115-1612"/>
+<unit id="org.apache.lucene.analyzers-common" version="7.1.0.v20180122-2126"/>
+<unit id="org.apache.lucene.analyzers-common.source" version="7.1.0.v20180122-2126"/>
+<unit id="org.apache.lucene.core" version="7.1.0.v20171214-1510"/>
+<unit id="org.apache.lucene.core.source" version="7.1.0.v20171214-1510"/>
+<unit id="org.apache.lucene.misc" version="7.1.0.v20180220-1923"/>
+<unit id="org.apache.lucene.misc.source" version="7.1.0.v20180220-1923"/>
<unit id="org.h2" version="1.3.168.v201212121212"/>
<unit id="org.h2.source" version="1.3.168.v201212121212"/>
<unit id="org.hamcrest" version="0.0.0"/>
@@ -27,7 +27,7 @@
<unit id="org.junit.source" version="4.12.0.v201504281640"/>
<unit id="org.mockito" version="0.0.0"/>
<unit id="org.objenesis" version="0.0.0"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/M20170818183741/repository/"/>
+<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/S20180302171354/repository/"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
<unit id="org.eclipse.emf.sdk.feature.group" version="0.0.0"/>