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"/>
