Blob Blame History Raw
From 7e707748a5d500c34b2d6350c0093c05c3d2775c Mon Sep 17 00:00:00 2001
From: Mat Booth <mat.booth@redhat.com>
Date: Mon, 8 Aug 2016 19:48:08 +0100
Subject: [PATCH 2/2] Update to lucene 5

---
 h2/pom.xml                                      | 13 ++++++++++++-
 h2/src/main/META-INF/MANIFEST.MF                | 16 ++++++++--------
 h2/src/main/org/h2/fulltext/FullTextLucene.java | 18 +++++++++---------
 h2/src/tools/org/h2/build/Build.java            |  8 ++++++--
 4 files changed, 35 insertions(+), 20 deletions(-)

diff --git a/h2/src/main/META-INF/MANIFEST.MF b/h2/src/main/META-INF/MANIFEST.MF
index 9f219d1..49dc47d 100644
--- a/h2/src/main/META-INF/MANIFEST.MF
+++ b/h2/src/main/META-INF/MANIFEST.MF
@@ -23,14 +23,14 @@ Import-Package: javax.management,
  javax.sql,
  javax.tools;resolution:=optional,
  javax.transaction.xa;resolution:=optional,
- org.apache.lucene.analysis;version="[3.6.2,4.0.0)";resolution:=optional,
- org.apache.lucene.analysis.standard;version="[3.6.2,4.0.0)";resolution:=optional,
- org.apache.lucene.document;version="[3.6.2,4.0.0)";resolution:=optional,
- org.apache.lucene.index;version="[3.6.2,4.0.0)";resolution:=optional,
- org.apache.lucene.queryParser;version="[3.6.2,4.0.0)";resolution:=optional,
- org.apache.lucene.search;version="[3.6.2,4.0.0)";resolution:=optional,
- org.apache.lucene.store;version="[3.6.2,4.0.0)";resolution:=optional,
- org.apache.lucene.util;version="[3.6.2,4.0.0)";resolution:=optional,
+ org.apache.lucene.analysis;version="[5.4.1,6.0.0)";resolution:=optional,
+ org.apache.lucene.analysis.standard;version="[5.4.1,6.0.0)";resolution:=optional,
+ org.apache.lucene.document;version="[5.4.1,6.0.0)";resolution:=optional,
+ org.apache.lucene.index;version="[5.4.1,6.0.0)";resolution:=optional,
+ org.apache.lucene.queryParser;version="[5.4.1,6.0.0)";resolution:=optional,
+ org.apache.lucene.search;version="[5.4.1,6.0.0)";resolution:=optional,
+ org.apache.lucene.store;version="[5.4.1,6.0.0)";resolution:=optional,
+ org.apache.lucene.util;version="[5.4.1,6.0.0)";resolution:=optional,
  com.vividsolutions.jts.geom;version="1.14.0";resolution:=optional,
  com.vividsolutions.jts.io;version="1.14.0";resolution:=optional,
  org.h2;version="[${version},1.5.0)",
diff --git a/h2/src/main/org/h2/fulltext/FullTextLucene.java b/h2/src/main/org/h2/fulltext/FullTextLucene.java
index f24bcab..d9c5b92 100644
--- a/h2/src/main/org/h2/fulltext/FullTextLucene.java
+++ b/h2/src/main/org/h2/fulltext/FullTextLucene.java
@@ -19,10 +19,11 @@ import org.apache.lucene.analysis.standard.StandardAnalyzer;
 import org.apache.lucene.document.DateTools;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
+import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.index.Term;
-import org.apache.lucene.queryParser.QueryParser;
+import org.apache.lucene.queryparser.classic.QueryParser;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.Query;
 import org.h2.api.Trigger;
@@ -303,13 +304,14 @@ public class FullTextLucene extends FullText {
             if (access == null) {
                 try {
                     Directory indexDir = path.startsWith(IN_MEMORY_PREFIX) ?
-                            new RAMDirectory() : FSDirectory.open(new File(path));
-                    Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);
-                    IndexWriterConfig conf = new IndexWriterConfig(Version.LUCENE_30, analyzer);
+                            new RAMDirectory() : FSDirectory.open(new File(path).toPath());
+                    Analyzer analyzer = new StandardAnalyzer();
+                    analyzer.setVersion(Version.LUCENE_5_4_1);
+                    IndexWriterConfig conf = new IndexWriterConfig(analyzer);
                     conf.setOpenMode(IndexWriterConfig.OpenMode.CREATE_OR_APPEND);
                     IndexWriter writer = new IndexWriter(indexDir, conf);
                     //see http://wiki.apache.org/lucene-java/NearRealtimeSearch
-                    IndexReader reader = IndexReader.open(writer, true);
+                    IndexReader reader = DirectoryReader.open(writer, true);
                     access = new IndexAccess();
                     access.writer = writer;
                     access.reader = reader;
@@ -394,7 +396,6 @@ public class FullTextLucene extends FullText {
         synchronized (INDEX_ACCESS) {
             try {
                 INDEX_ACCESS.remove(indexPath);
-                access.searcher.close();
                 access.reader.close();
                 access.writer.close();
             } catch (Exception e) {
@@ -430,7 +431,7 @@ public class FullTextLucene extends FullText {
             // reuse the same analyzer; it's thread-safe;
             // also allows subclasses to control the analyzer used.
             Analyzer analyzer = access.writer.getAnalyzer();
-            QueryParser parser = new QueryParser(Version.LUCENE_30,
+            QueryParser parser = new QueryParser(
                     LUCENE_FIELD_DATA, analyzer);
             Query query = parser.parse(text);
             // Lucene 3 insists on a hard limit and will not provide
@@ -604,9 +605,8 @@ public class FullTextLucene extends FullText {
             try {
                 indexAccess.writer.commit();
                 // recreate Searcher with the IndexWriter's reader.
-                indexAccess.searcher.close();
                 indexAccess.reader.close();
-                indexAccess.reader = IndexReader.open(indexAccess.writer, true);
+                indexAccess.reader = DirectoryReader.open(indexAccess.writer, true);
                 indexAccess.searcher = new IndexSearcher(indexAccess.reader);
             } catch (IOException e) {
                 throw convertException(e);
diff --git a/h2/src/tools/org/h2/build/Build.java b/h2/src/tools/org/h2/build/Build.java
index a599656..24d97c6 100644
--- a/h2/src/tools/org/h2/build/Build.java
+++ b/h2/src/tools/org/h2/build/Build.java
@@ -204,7 +204,9 @@ public class Build extends BuildBase {
         download();
         String classpath = "temp" +
                 File.pathSeparator + "ext/servlet-api-3.1.0.jar" +
-                File.pathSeparator + "ext/lucene-core-3.6.2.jar" +
+                File.pathSeparator + "ext/lucene-core-5.4.1.jar" +
+                File.pathSeparator + "ext/lucene-analyzers-common-5.4.1.jar" +
+                File.pathSeparator + "ext/lucene-queryparser-5.4.1.jar" +
                 File.pathSeparator + "ext/slf4j-api-1.6.0.jar" +
                 File.pathSeparator + "ext/org.osgi.core-4.2.0.jar" +
                 File.pathSeparator + "ext/org.osgi.enterprise-4.2.0.jar" +
@@ -595,7 +597,9 @@ public class Build extends BuildBase {
         javadoc("-sourcepath", "src/main", "org.h2.jdbc", "org.h2.jdbcx",
                 "org.h2.tools", "org.h2.api", "org.h2.engine", "org.h2.fulltext",
                 "-classpath",
-                "ext/lucene-core-3.6.2.jar" +
+                "ext/lucene-core-5.4.1.jar" + File.pathSeparator +
+                "ext/lucene-analyzers-common-5.4.1.jar" + File.pathSeparator +
+                "ext/lucene-queryparser-5.4.1.jar" +
                 File.pathSeparator + "ext/jts-core-1.14.0.jar",
                 "-docletpath", "bin" + File.pathSeparator + "temp",
                 "-doclet", "org.h2.build.doclet.Doclet");
-- 
2.5.5