diff --git a/org.eclipse.help.base/META-INF/MANIFEST.MF b/org.eclipse.help.base/META-INF/MANIFEST.MF
index 91c3617..fdd8060 100644
--- a/org.eclipse.help.base/META-INF/MANIFEST.MF
+++ b/org.eclipse.help.base/META-INF/MANIFEST.MF
@@ -44,9 +44,9 @@
  org.eclipse.help;bundle-version="[3.5.0,4.0.0)";visibility:=reexport,
  org.eclipse.core.expressions;bundle-version="[3.4.200,4.0.0)",
  org.eclipse.core.net;bundle-version="[1.2.200,2.0.0]",
- org.apache.lucene.analyzers-common;bundle-version="[7.0.0,8.0.0)",
- org.apache.lucene.core;bundle-version="[7.0.0,8.0.0)",
- org.apache.lucene.analyzers-smartcn;bundle-version="[7.0.0,8.0.0)"
+ org.apache.lucene.analyzers-common;bundle-version="[8.0.0,9.0.0)",
+ org.apache.lucene.core;bundle-version="[8.0.0,9.0.0)",
+ org.apache.lucene.analyzers-smartcn;bundle-version="[8.0.0,9.0.0)"
 Import-Package: com.ibm.icu.text,
  org.eclipse.equinox.http.jetty;resolution:=optional
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/org.eclipse.help.base/src/org/eclipse/help/internal/search/Analyzer_en.java b/org.eclipse.help.base/src/org/eclipse/help/internal/search/Analyzer_en.java
index b4f21e0..cdc550e 100644
--- a/org.eclipse.help.base/src/org/eclipse/help/internal/search/Analyzer_en.java
+++ b/org.eclipse.help.base/src/org/eclipse/help/internal/search/Analyzer_en.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -20,9 +20,10 @@
 
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.CharArraySet;
+import org.apache.lucene.analysis.StopFilter;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.Tokenizer;
-import org.apache.lucene.analysis.core.StopFilter;
+import org.apache.lucene.analysis.core.LowerCaseFilter;
 import org.apache.lucene.analysis.en.PorterStemFilter;
 
 /**
@@ -44,9 +45,9 @@
 	@SuppressWarnings("resource")
 	@Override
 	protected TokenStreamComponents createComponents(String fieldName) {
-		final Tokenizer source;
-		source = new LowerCaseAndDigitsTokenizer();
+		final Tokenizer source = new CharAndDigitsTokenizer();
 		TokenStream result = new StopFilter(source, new CharArraySet(getStopWords(), false));
+		result = new LowerCaseFilter(result);
 		result = new PorterStemFilter(result);
 		return new TokenStreamComponents(source, result);
 	}
diff --git a/org.eclipse.help.base/src/org/eclipse/help/internal/search/LowerCaseAndDigitsTokenizer.java b/org.eclipse.help.base/src/org/eclipse/help/internal/search/CharAndDigitsTokenizer.java
similarity index 80%
rename from org.eclipse.help.base/src/org/eclipse/help/internal/search/LowerCaseAndDigitsTokenizer.java
rename to org.eclipse.help.base/src/org/eclipse/help/internal/search/CharAndDigitsTokenizer.java
index 7053a10..f19bcfa 100644
--- a/org.eclipse.help.base/src/org/eclipse/help/internal/search/LowerCaseAndDigitsTokenizer.java
+++ b/org.eclipse.help.base/src/org/eclipse/help/internal/search/CharAndDigitsTokenizer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -21,16 +21,10 @@
  * Tokenizer breaking words around letters or digits. Also normalizes to lower
  * case.
  */
-public class LowerCaseAndDigitsTokenizer extends CharTokenizer {
+public class CharAndDigitsTokenizer extends CharTokenizer {
 
 	@Override
 	protected boolean isTokenChar(int c) {
 		return Character.isLetterOrDigit(c);
 	}
-
-	@Override
-	protected int normalize(int c) {
-		return Character.toLowerCase(c);
-	}
-
 }
diff --git a/org.eclipse.help.base/src/org/eclipse/help/internal/search/SearchIndex.java b/org.eclipse.help.base/src/org/eclipse/help/internal/search/SearchIndex.java
index 27e820f..9397a66 100644
--- a/org.eclipse.help.base/src/org/eclipse/help/internal/search/SearchIndex.java
+++ b/org.eclipse.help.base/src/org/eclipse/help/internal/search/SearchIndex.java
@@ -758,9 +758,9 @@
 		}
 		Version luceneVersion = new Version(luceneVersionString);
 		Version indexVersion = new Version(indexVersionString);
-		Version v700 = new Version(7, 0, 0);
-		if (indexVersion.compareTo(v700) < 0) {
-			// index is older than Lucene 7.0.0
+		Version v800 = new Version(8, 0, 0);
+		if (indexVersion.compareTo(v800) < 0) {
+			// index is older than Lucene 8.0.0
 			return false;
 		}
 		if ( luceneVersion.compareTo(indexVersion) >= 0 ) {
diff --git a/org.eclipse.ua.tests/META-INF/MANIFEST.MF b/org.eclipse.ua.tests/META-INF/MANIFEST.MF
index 7301b0c..c6e0e89 100644
--- a/org.eclipse.ua.tests/META-INF/MANIFEST.MF
+++ b/org.eclipse.ua.tests/META-INF/MANIFEST.MF
@@ -20,9 +20,9 @@
  org.eclipse.ui.browser;bundle-version="3.2.300",
  org.eclipse.equinox.jsp.jasper;bundle-version="1.0.200",
  org.eclipse.equinox.jsp.jasper.registry;bundle-version="1.0.100",
- org.apache.lucene.analyzers-common;bundle-version="7.0.0",
- org.apache.lucene.analyzers-smartcn;bundle-version="7.0.0",
- org.apache.lucene.core;bundle-version="7.0.0"
+ org.apache.lucene.analyzers-common;bundle-version="8.0.0",
+ org.apache.lucene.analyzers-smartcn;bundle-version="8.0.0",
+ org.apache.lucene.core;bundle-version="8.0.0"
 Bundle-ActivationPolicy: lazy
 Bundle-Vendor: Eclipse.org
 Import-Package: javax.servlet;version="3.1.0",
diff --git a/org.eclipse.ua.tests/data/help/searchindex/index800/_1.fdt b/org.eclipse.ua.tests/data/help/searchindex/index800/_1.fdt
new file mode 100644
index 0000000..db4a61f
--- /dev/null
+++ b/org.eclipse.ua.tests/data/help/searchindex/index800/_1.fdt
Binary files differ
diff --git a/org.eclipse.ua.tests/data/help/searchindex/index800/_1.fdx b/org.eclipse.ua.tests/data/help/searchindex/index800/_1.fdx
new file mode 100644
index 0000000..c657abd
--- /dev/null
+++ b/org.eclipse.ua.tests/data/help/searchindex/index800/_1.fdx
Binary files differ
diff --git a/org.eclipse.ua.tests/data/help/searchindex/index800/_1.fnm b/org.eclipse.ua.tests/data/help/searchindex/index800/_1.fnm
new file mode 100644
index 0000000..53c73bc
--- /dev/null
+++ b/org.eclipse.ua.tests/data/help/searchindex/index800/_1.fnm
Binary files differ
diff --git a/org.eclipse.ua.tests/data/help/searchindex/index800/_1.nvd b/org.eclipse.ua.tests/data/help/searchindex/index800/_1.nvd
new file mode 100644
index 0000000..237dcb3
--- /dev/null
+++ b/org.eclipse.ua.tests/data/help/searchindex/index800/_1.nvd
Binary files differ
diff --git a/org.eclipse.ua.tests/data/help/searchindex/index800/_1.nvm b/org.eclipse.ua.tests/data/help/searchindex/index800/_1.nvm
new file mode 100644
index 0000000..a3fbaa1
--- /dev/null
+++ b/org.eclipse.ua.tests/data/help/searchindex/index800/_1.nvm
Binary files differ
diff --git a/org.eclipse.ua.tests/data/help/searchindex/index800/_1.si b/org.eclipse.ua.tests/data/help/searchindex/index800/_1.si
new file mode 100644
index 0000000..105925c
--- /dev/null
+++ b/org.eclipse.ua.tests/data/help/searchindex/index800/_1.si
Binary files differ
diff --git a/org.eclipse.ua.tests/data/help/searchindex/index800/_1_Lucene50_0.doc b/org.eclipse.ua.tests/data/help/searchindex/index800/_1_Lucene50_0.doc
new file mode 100644
index 0000000..366eeee
--- /dev/null
+++ b/org.eclipse.ua.tests/data/help/searchindex/index800/_1_Lucene50_0.doc
Binary files differ
diff --git a/org.eclipse.ua.tests/data/help/searchindex/index800/_1_Lucene50_0.pos b/org.eclipse.ua.tests/data/help/searchindex/index800/_1_Lucene50_0.pos
new file mode 100644
index 0000000..fe8ae27
--- /dev/null
+++ b/org.eclipse.ua.tests/data/help/searchindex/index800/_1_Lucene50_0.pos
Binary files differ
diff --git a/org.eclipse.ua.tests/data/help/searchindex/index800/_1_Lucene50_0.tim b/org.eclipse.ua.tests/data/help/searchindex/index800/_1_Lucene50_0.tim
new file mode 100644
index 0000000..50d8903
--- /dev/null
+++ b/org.eclipse.ua.tests/data/help/searchindex/index800/_1_Lucene50_0.tim
Binary files differ
diff --git a/org.eclipse.ua.tests/data/help/searchindex/index800/_1_Lucene50_0.tip b/org.eclipse.ua.tests/data/help/searchindex/index800/_1_Lucene50_0.tip
new file mode 100644
index 0000000..95a8c32
--- /dev/null
+++ b/org.eclipse.ua.tests/data/help/searchindex/index800/_1_Lucene50_0.tip
Binary files differ
diff --git a/org.eclipse.ua.tests/data/help/searchindex/index800/indexed_contributions b/org.eclipse.ua.tests/data/help/searchindex/index800/indexed_contributions
new file mode 100644
index 0000000..23a1b5e
--- /dev/null
+++ b/org.eclipse.ua.tests/data/help/searchindex/index800/indexed_contributions
@@ -0,0 +1,8 @@
+#This is a generated file; do not edit.
+#Thu Mar 28 18:54:06 EET 2019
+org.eclipse.help=org.eclipse.help\n3.8.400.qualifier
+org.eclipse.ui.cheatsheets=org.eclipse.ui.cheatsheets\n3.5.400.qualifier
+org.eclipse.platform=org.eclipse.platform\n4.12.0.v20190325-1800
+org.eclipse.ui.intro=org.eclipse.ui.intro\n3.5.600.qualifier
+helptest=helptest\n1.0.0.qualifier
+org.eclipse.help.base=org.eclipse.help.base\n4.2.600.qualifier
diff --git a/org.eclipse.ua.tests/data/help/searchindex/index800/indexed_dependencies b/org.eclipse.ua.tests/data/help/searchindex/index800/indexed_dependencies
new file mode 100644
index 0000000..f61f651
--- /dev/null
+++ b/org.eclipse.ua.tests/data/help/searchindex/index800/indexed_dependencies
@@ -0,0 +1,4 @@
+#This is a generated file; do not edit.
+#Thu Mar 28 18:54:06 EET 2019
+analyzer=org.eclipse.help.base\#4.2.600.qualifier?locale\=en
+lucene=8.0.0.v20190326-1635
diff --git a/org.eclipse.ua.tests/data/help/searchindex/index800/indexed_docs b/org.eclipse.ua.tests/data/help/searchindex/index800/indexed_docs
new file mode 100644
index 0000000..309e42c
--- /dev/null
+++ b/org.eclipse.ua.tests/data/help/searchindex/index800/indexed_docs
@@ -0,0 +1,5 @@
+#This is a generated file; do not edit.
+#Thu Mar 28 18:54:06 EET 2019
+/helptest/html/subtopic.html=0
+/helptest/html/toc.html=0
+/helptest/html/maintopic.html=0
diff --git a/org.eclipse.ua.tests/data/help/searchindex/index800/segments_1 b/org.eclipse.ua.tests/data/help/searchindex/index800/segments_1
new file mode 100644
index 0000000..aeac473
--- /dev/null
+++ b/org.eclipse.ua.tests/data/help/searchindex/index800/segments_1
Binary files differ
diff --git a/org.eclipse.ua.tests/data/help/searchindex/index800/write.lock b/org.eclipse.ua.tests/data/help/searchindex/index800/write.lock
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.ua.tests/data/help/searchindex/index800/write.lock
diff --git a/org.eclipse.ua.tests/help/org/eclipse/ua/tests/help/search/PrebuiltIndexCompatibility.java b/org.eclipse.ua.tests/help/org/eclipse/ua/tests/help/search/PrebuiltIndexCompatibility.java
index f3301db..94b828a 100644
--- a/org.eclipse.ua.tests/help/org/eclipse/ua/tests/help/search/PrebuiltIndexCompatibility.java
+++ b/org.eclipse.ua.tests/help/org/eclipse/ua/tests/help/search/PrebuiltIndexCompatibility.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011, 2016 IBM Corporation and others.
+ * Copyright (c) 2011, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -86,7 +86,7 @@
 	/**
 	 * Test index built with Lucene 6.1.0
 	 */
-	@Test(expected = IllegalArgumentException.class)
+	@Test(expected = IndexFormatTooOldException.class)
 	public void test6_1_0_IndexUnReadable() throws Exception {
 		checkReadable("data/help/searchindex/index610");
 	}
@@ -94,12 +94,20 @@
 	/**
 	 * Test index built with Lucene 7.0.0
 	 */
-	@Test
-	public void test7_0_0_IndexReadable() throws Exception {
+	@Test(expected = IndexFormatTooOldException.class)
+	public void test7_0_0_IndexUnReadable() throws Exception {
 		checkReadable("data/help/searchindex/index700");
 	}
 
 	/**
+	 * Test index built with Lucene 8.0.0
+	 */
+	@Test
+	public void test8_0_0_IndexReadable() throws Exception {
+		checkReadable("data/help/searchindex/index800");
+	}
+
+	/**
 	 ** Test compatibility of Lucene 1.9.1 index with current Lucene
 	 */
 	@Test
@@ -138,7 +146,7 @@
 	 */
 	@Test
 	public void test7_0_0Compatible() {
-		checkCompatible("data/help/searchindex/index700", true);
+		checkCompatible("data/help/searchindex/index700", false);
 	}
 
 	@Test
@@ -171,7 +179,12 @@
 
 	@Test
 	public void test7_0_0LuceneCompatible() {
-		checkLuceneCompatible("7.0.0", true);
+		checkLuceneCompatible("7.0.0", false);
+	}
+
+	@Test
+	public void test8_0_0LuceneCompatible() {
+		checkLuceneCompatible("8.0.0", true);
 	}
 
 	@Test
@@ -227,7 +240,7 @@
 			try (Directory luceneDirectory = new NIOFSDirectory(new File(filePath).toPath())) {
 				searcher = new IndexSearcher(DirectoryReader.open(luceneDirectory));
 				TopDocs hits = searcher.search(luceneQuery, 500);
-				assertTrue(hits.totalHits >= 1);
+				assertTrue(hits.totalHits.value >= 1);
 			}
 		} else {
 			fail("Cannot resolve to file protocol");
@@ -263,5 +276,4 @@
 				index);
 		assertEquals(expected, index.isLuceneCompatible(version));
 	}
-
 }
