You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by os...@apache.org on 2017/03/10 08:39:01 UTC

[1/4] jena git commit: Upgrade to Lucene 5.5.4, drop all version fields, reimplement multilingual analyzer (JENA-1250)

Repository: jena
Updated Branches:
  refs/heads/master c5c15bb25 -> 973de6be5


Upgrade to Lucene 5.5.4, drop all version fields, reimplement multilingual analyzer (JENA-1250)


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/a7c37dc4
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/a7c37dc4
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/a7c37dc4

Branch: refs/heads/master
Commit: a7c37dc421880547f71178e93dfc04dafeb8fd2e
Parents: 502c58b
Author: Osma Suominen <os...@helsinki.fi>
Authored: Fri Mar 3 10:34:50 2017 +0200
Committer: Osma Suominen <os...@helsinki.fi>
Committed: Fri Mar 3 11:01:36 2017 +0200

----------------------------------------------------------------------
 jena-parent/pom.xml                             |  2 +-
 .../main/java/examples/JenaSpatialExample1.java |  2 +-
 .../src/main/java/jena/spatialindexdump.java    |  2 +-
 .../jena/query/spatial/SpatialIndexLucene.java  | 13 ++--
 .../assembler/SpatialIndexLuceneAssembler.java  |  3 +-
 .../jena/query/spatial/SpatialSearchUtil.java   | 13 ++--
 jena-text/src/main/java/jena/textindexdump.java |  2 +-
 .../jena/query/text/TextDatasetFactory.java     |  7 +-
 .../apache/jena/query/text/TextIndexLucene.java | 51 ++++++++-----
 .../query/text/TextIndexLuceneMultilingual.java | 75 --------------------
 .../text/analyzer/ConfigurableAnalyzer.java     | 24 +++----
 .../text/analyzer/LowerCaseKeywordAnalyzer.java | 14 +---
 .../text/analyzer/MultilingualAnalyzer.java     | 54 ++++++++++++++
 .../apache/jena/query/text/analyzer/Util.java   | 10 +--
 .../ConfigurableAnalyzerAssembler.java          |  3 +-
 .../assembler/LocalizedAnalyzerAssembler.java   |  5 +-
 .../LowerCaseKeywordAnalyzerAssembler.java      |  3 +-
 .../text/assembler/SimpleAnalyzerAssembler.java |  3 +-
 .../assembler/StandardAnalyzerAssembler.java    |  7 +-
 .../assembler/TextIndexLuceneAssembler.java     |  5 +-
 .../text/TestLuceneWithMultipleThreads.java     |  3 +-
 .../apache/jena/query/text/TextSearchUtil.java  |  8 +--
 22 files changed, 132 insertions(+), 177 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/a7c37dc4/jena-parent/pom.xml
----------------------------------------------------------------------
diff --git a/jena-parent/pom.xml b/jena-parent/pom.xml
index 8af18b4..e801e83 100644
--- a/jena-parent/pom.xml
+++ b/jena-parent/pom.xml
@@ -72,7 +72,7 @@
     <ver.httpclient-osgi>${ver.httpclient}</ver.httpclient-osgi>
 
     <ver.commons-codec>1.10</ver.commons-codec>
-    <ver.lucene>4.9.1</ver.lucene>
+    <ver.lucene>5.5.4</ver.lucene>
     <ver.solr>4.9.1</ver.solr>
     <ver.spatial4j>0.5</ver.spatial4j>
 

http://git-wip-us.apache.org/repos/asf/jena/blob/a7c37dc4/jena-spatial/src/main/java/examples/JenaSpatialExample1.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/examples/JenaSpatialExample1.java b/jena-spatial/src/main/java/examples/JenaSpatialExample1.java
index b858b17..03f77e7 100644
--- a/jena-spatial/src/main/java/examples/JenaSpatialExample1.java
+++ b/jena-spatial/src/main/java/examples/JenaSpatialExample1.java
@@ -140,7 +140,7 @@ public class JenaSpatialExample1 {
         
 
         // Lucene, index in File system.
-        Directory dir = FSDirectory.open(indexDir);
+        Directory dir = FSDirectory.open(indexDir.toPath());
 
         // Join together into a dataset
         Dataset ds = SpatialDatasetFactory.createLucene(baseDataset, dir, entDef);

http://git-wip-us.apache.org/repos/asf/jena/blob/a7c37dc4/jena-spatial/src/main/java/jena/spatialindexdump.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/jena/spatialindexdump.java b/jena-spatial/src/main/java/jena/spatialindexdump.java
index 904637c..29a3d5d 100644
--- a/jena-spatial/src/main/java/jena/spatialindexdump.java
+++ b/jena-spatial/src/main/java/jena/spatialindexdump.java
@@ -103,7 +103,7 @@ public class spatialindexdump extends CmdARQ {
             Analyzer analyzer = spatialIndex.getAnalyzer() ;
             IndexReader indexReader = DirectoryReader.open(directory) ;
             IndexSearcher indexSearcher = new IndexSearcher(indexReader);
-            QueryParser queryParser = new QueryParser(SpatialIndexLucene.VER, spatialIndex.getDocDef().getEntityField(), analyzer);
+            QueryParser queryParser = new QueryParser(spatialIndex.getDocDef().getEntityField(), analyzer);
             Query query = queryParser.parse("*:*");
             ScoreDoc[] sDocs = indexSearcher.search(query, 1000).scoreDocs ;
             for ( ScoreDoc sd : sDocs ) {

http://git-wip-us.apache.org/repos/asf/jena/blob/a7c37dc4/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexLucene.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexLucene.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexLucene.java
index e340cd6..85a8bb4 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexLucene.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexLucene.java
@@ -37,7 +37,6 @@ import org.apache.lucene.spatial.prefix.tree.SpatialPrefixTree ;
 import org.apache.lucene.spatial.query.SpatialArgs ;
 import org.apache.lucene.spatial.query.SpatialOperation ;
 import org.apache.lucene.store.Directory ;
-import org.apache.lucene.util.Version ;
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
 
@@ -48,14 +47,13 @@ public class SpatialIndexLucene implements SpatialIndex {
 			.getLogger(SpatialIndexLucene.class);
 
 	private static int MAX_N = 10000;
-	public static final Version VER = Version.LUCENE_4_9;
 
 	public static final FieldType ftIRI;
 	static {
 		ftIRI = new FieldType();
 		ftIRI.setTokenized(false);
 		ftIRI.setStored(true);
-		ftIRI.setIndexed(true);
+		ftIRI.setIndexOptions(IndexOptions.DOCS);
 		ftIRI.freeze();
 	}
 	// public static final FieldType ftText = TextField.TYPE_NOT_STORED ;
@@ -65,7 +63,7 @@ public class SpatialIndexLucene implements SpatialIndex {
 	private final EntityDefinition docDef;
 	private final Directory directory;
 	private IndexWriter indexWriter;
-	private Analyzer analyzer = new StandardAnalyzer(VER);
+	private Analyzer analyzer = new StandardAnalyzer();
 
 	/**
 	 * The Lucene spatial {@link SpatialStrategy} encapsulates an approach to
@@ -108,7 +106,7 @@ public class SpatialIndexLucene implements SpatialIndex {
 	@Override
 	public void startIndexing() {
 		try {
-			IndexWriterConfig wConfig = new IndexWriterConfig(VER, analyzer);
+			IndexWriterConfig wConfig = new IndexWriterConfig(analyzer);
 			indexWriter = new IndexWriter(directory, wConfig);
 		} catch (IOException e) {
 			exception(e);
@@ -193,9 +191,8 @@ public class SpatialIndexLucene implements SpatialIndex {
 		IndexSearcher indexSearcher = new IndexSearcher(indexReader);
 		SpatialArgs args = new SpatialArgs(operation, shape);
 		args.setDistErr(0.0);
-		Filter filter = strategy.makeFilter(args);
-		TopDocs docs = indexSearcher.search(new MatchAllDocsQuery(), filter,
-				limit);
+		Query query = strategy.makeQuery(args);
+		TopDocs docs = indexSearcher.search(query, limit);
 
 		List<Node> results = new ArrayList<>();
 

http://git-wip-us.apache.org/repos/asf/jena/blob/a7c37dc4/jena-spatial/src/main/java/org/apache/jena/query/spatial/assembler/SpatialIndexLuceneAssembler.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/assembler/SpatialIndexLuceneAssembler.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/assembler/SpatialIndexLuceneAssembler.java
index 5554e3d..643b54e 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/assembler/SpatialIndexLuceneAssembler.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/assembler/SpatialIndexLuceneAssembler.java
@@ -50,7 +50,6 @@ public class SpatialIndexLuceneAssembler extends AssemblerBase
         .
     */
 
-    @SuppressWarnings("resource")
     @Override
     public SpatialIndex open(Assembler a, Resource root, Mode mode)
     {
@@ -72,7 +71,7 @@ public class SpatialIndexLuceneAssembler extends AssemblerBase
                 Resource x = n.asResource() ;
                 String path = IRILib.IRIToFilename(x.getURI()) ; 
                 File dir = new File(path) ; 
-                directory = FSDirectory.open(dir) ;
+                directory = FSDirectory.open(dir.toPath()) ;
             }
         
             Resource r = GraphUtils.getResourceValue(root, pDefinition) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/a7c37dc4/jena-spatial/src/test/java/org/apache/jena/query/spatial/SpatialSearchUtil.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/test/java/org/apache/jena/query/spatial/SpatialSearchUtil.java b/jena-spatial/src/test/java/org/apache/jena/query/spatial/SpatialSearchUtil.java
index a1b5f08..8d0453a 100644
--- a/jena-spatial/src/test/java/org/apache/jena/query/spatial/SpatialSearchUtil.java
+++ b/jena-spatial/src/test/java/org/apache/jena/query/spatial/SpatialSearchUtil.java
@@ -31,13 +31,9 @@ import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.FSDirectory;
-import org.apache.lucene.util.Version;
 
 public class SpatialSearchUtil {
-	
-    private static Version VER = SpatialIndexLucene.VER ;
-    private static final Analyzer analyzer = new StandardAnalyzer(VER);
-    
+    private static final Analyzer analyzer = new StandardAnalyzer();
 	private static final String LUCENE_INDEX_PATH = "target/test/LuceneSpatialIndex";
 	private static final File LUCENE_Index_DIR = new File(LUCENE_INDEX_PATH);
 	
@@ -63,9 +59,8 @@ public class SpatialSearchUtil {
 
     public static void createEmptyIndex(File indexDir) {
         try {
-            Directory directory = FSDirectory.open(indexDir) ;
-            IndexWriterConfig wConfig = new IndexWriterConfig(VER, analyzer) ;
-            @SuppressWarnings("resource")
+            Directory directory = FSDirectory.open(indexDir.toPath()) ;
+            IndexWriterConfig wConfig = new IndexWriterConfig(analyzer) ;
             IndexWriter indexWriter = new IndexWriter(directory, wConfig) ;
             indexWriter.close() ; // force creation of the index files
         } catch (IOException ex) {
@@ -126,7 +121,7 @@ public class SpatialSearchUtil {
 		EntityDefinition entDef = new EntityDefinition("uri", "geo");
 
 		// Lucene, index in File system.
-		Directory dir = FSDirectory.open(indexDir);
+		Directory dir = FSDirectory.open(indexDir.toPath());
 
 		// Join together into a dataset
 		Dataset ds = SpatialDatasetFactory.createLucene(baseDataset, dir, entDef);

http://git-wip-us.apache.org/repos/asf/jena/blob/a7c37dc4/jena-text/src/main/java/jena/textindexdump.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/jena/textindexdump.java b/jena-text/src/main/java/jena/textindexdump.java
index 0226094..08f6cfb 100644
--- a/jena-text/src/main/java/jena/textindexdump.java
+++ b/jena-text/src/main/java/jena/textindexdump.java
@@ -101,7 +101,7 @@ public class textindexdump extends CmdARQ {
             Analyzer analyzer = textIndex.getQueryAnalyzer() ;
             IndexReader indexReader = DirectoryReader.open(directory) ;
             IndexSearcher indexSearcher = new IndexSearcher(indexReader);
-            QueryParser queryParser = new QueryParser(TextIndexLucene.VER, textIndex.getDocDef().getPrimaryField(), analyzer);
+            QueryParser queryParser = new QueryParser(textIndex.getDocDef().getPrimaryField(), analyzer);
             Query query = queryParser.parse("*:*");
             ScoreDoc[] sDocs = indexSearcher.search(query, 1000).scoreDocs ;
             for ( ScoreDoc sd : sDocs ) {

http://git-wip-us.apache.org/repos/asf/jena/blob/a7c37dc4/jena-text/src/main/java/org/apache/jena/query/text/TextDatasetFactory.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextDatasetFactory.java b/jena-text/src/main/java/org/apache/jena/query/text/TextDatasetFactory.java
index 544082b..043c482 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextDatasetFactory.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextDatasetFactory.java
@@ -107,12 +107,7 @@ public class TextDatasetFactory
      */
     public static TextIndex createLuceneIndex(Directory directory, TextIndexConfig config)
     {
-        TextIndex index;
-        if (config.isMultilingualSupport())
-            index = new TextIndexLuceneMultilingual(directory, config) ;
-        else
-            index = new TextIndexLucene(directory, config) ;
-        return index ;
+        return new TextIndexLucene(directory, config) ;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/jena/blob/a7c37dc4/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
index e6ef89f..b40ba03 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
@@ -27,6 +27,7 @@ import org.apache.jena.datatypes.TypeMapper ;
 import org.apache.jena.datatypes.xsd.XSDDatatype ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.NodeFactory ;
+import org.apache.jena.query.text.analyzer.MultilingualAnalyzer;
 import org.apache.jena.sparql.util.NodeFactoryExtra ;
 import org.apache.lucene.analysis.Analyzer ;
 import org.apache.lucene.analysis.core.KeywordAnalyzer ;
@@ -43,7 +44,6 @@ import org.apache.lucene.search.IndexSearcher ;
 import org.apache.lucene.search.Query ;
 import org.apache.lucene.search.ScoreDoc ;
 import org.apache.lucene.store.Directory ;
-import org.apache.lucene.util.Version ;
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
 
@@ -51,7 +51,6 @@ public class TextIndexLucene implements TextIndex {
     private static Logger          log      = LoggerFactory.getLogger(TextIndexLucene.class) ;
 
     private static int             MAX_N    = 10000 ;
-    public static final Version    VER      = Version.LUCENE_4_9 ;
     // prefix for storing datatype URIs in the index, to distinguish them from language tags
     private static final String    DATATYPE_PREFIX = "^^";
 
@@ -60,7 +59,7 @@ public class TextIndexLucene implements TextIndex {
         ftIRI = new FieldType() ;
         ftIRI.setTokenized(false) ;
         ftIRI.setStored(true) ;
-        ftIRI.setIndexed(true) ;
+		ftIRI.setIndexOptions(IndexOptions.DOCS);
         ftIRI.freeze() ;
     }
     public static final FieldType  ftString = StringField.TYPE_NOT_STORED ;
@@ -71,6 +70,7 @@ public class TextIndexLucene implements TextIndex {
     private final Analyzer         queryAnalyzer ;
     private final String           queryParserType ;
     private final FieldType        ftText ;
+    private final boolean          isMultilingual ;
 
     // The IndexWriter can't be final because we may have to recreate it if rollback() is called.
     // However, it needs to be volatile in case the next write transaction is on a different thread,
@@ -88,8 +88,14 @@ public class TextIndexLucene implements TextIndex {
         this.directory = directory ;
         this.docDef = config.getEntDef() ;
 
+        this.isMultilingual = config.isMultilingualSupport();
+        if (this.isMultilingual &&  config.getEntDef().getLangField() == null) {
+            //multilingual index cannot work without lang field
+            docDef.setLangField("lang");
+        }
+
         // create the analyzer as a wrapper that uses KeywordAnalyzer for
-        // entity and graph fields and StandardAnalyzer for all other
+        // entity and graph fields and the configured analyzer(s) for all other
         Map<String, Analyzer> analyzerPerField = new HashMap<>() ;
         analyzerPerField.put(docDef.getEntityField(), new KeywordAnalyzer()) ;
         if ( docDef.getGraphField() != null )
@@ -104,8 +110,10 @@ public class TextIndexLucene implements TextIndex {
             }
         }
 
-        this.analyzer = new PerFieldAnalyzerWrapper(
-                (null != config.getAnalyzer()) ? config.getAnalyzer() : new StandardAnalyzer(VER), analyzerPerField) ;
+        Analyzer defaultAnalyzer = (null != config.getAnalyzer()) ? config.getAnalyzer() : new StandardAnalyzer();
+        if (this.isMultilingual)
+            defaultAnalyzer = new MultilingualAnalyzer(defaultAnalyzer);
+        this.analyzer = new PerFieldAnalyzerWrapper(defaultAnalyzer, analyzerPerField) ;
         this.queryAnalyzer = (null != config.getQueryAnalyzer()) ? config.getQueryAnalyzer() : this.analyzer ;
         this.queryParserType = config.getQueryParser() ;
         this.ftText = config.isValueStored() ? TextField.TYPE_STORED : TextField.TYPE_NOT_STORED ;
@@ -116,7 +124,7 @@ public class TextIndexLucene implements TextIndex {
     }
 
     private void openIndexWriter() {
-        IndexWriterConfig wConfig = new IndexWriterConfig(VER, analyzer) ;
+        IndexWriterConfig wConfig = new IndexWriterConfig(analyzer) ;
         try
         {
             indexWriter = new IndexWriter(directory, wConfig) ;
@@ -264,6 +272,10 @@ public class TextIndexLucene implements TextIndex {
                 RDFDatatype datatype = entity.getDatatype();
                 if (lang != null && !"".equals(lang)) {
                     doc.add(new Field(langField, lang, StringField.TYPE_STORED));
+                    if (this.isMultilingual) {
+                        // add a field that uses a language-specific analyzer via MultilingualAnalyzer
+                        doc.add(new Field(e.getKey() + "_" + lang, (String) e.getValue(), ftText));
+                    }
                 } else if (datatype != null && !datatype.equals(XSDDatatype.XSDstring)) {
                     // for non-string and non-langString datatypes, store the datatype in langField
                     doc.add(new Field(langField, DATATYPE_PREFIX + datatype.getURI(), StringField.TYPE_STORED));
@@ -296,32 +308,37 @@ public class TextIndexLucene implements TextIndex {
     private QueryParser getQueryParser(Analyzer analyzer) {
         switch(queryParserType) {
             case "QueryParser":
-                return new QueryParser(VER, docDef.getPrimaryField(), analyzer) ;
+                return new QueryParser(docDef.getPrimaryField(), analyzer) ;
             case "AnalyzingQueryParser":
-                return new AnalyzingQueryParser(VER, docDef.getPrimaryField(), analyzer) ;
+                return new AnalyzingQueryParser(docDef.getPrimaryField(), analyzer) ;
             case "ComplexPhraseQueryParser":
-                return new ComplexPhraseQueryParser(VER, docDef.getPrimaryField(), analyzer);
+                return new ComplexPhraseQueryParser(docDef.getPrimaryField(), analyzer);
             default:
                 log.warn("Unknown query parser type '" + queryParserType + "'. Defaulting to standard QueryParser") ;
-                return new QueryParser(VER, docDef.getPrimaryField(), analyzer) ;
+                return new QueryParser(docDef.getPrimaryField(), analyzer) ;
         }
     }
 
     private Query parseQuery(String queryString, Analyzer analyzer) throws ParseException {
+        if (this.isMultilingual) {
+            if (queryString.contains(getDocDef().getLangField() + ":")) {
+                String lang = queryString.substring(queryString.lastIndexOf(":") + 1);
+                if (!"*".equals(lang)) {
+                    // splice the language into the field name
+                    queryString = queryString.replaceFirst(":", "_" + lang + ":");
+                }
+            }
+        }
         QueryParser queryParser = getQueryParser(analyzer) ;
         queryParser.setAllowLeadingWildcard(true) ;
         Query query = queryParser.parse(queryString) ;
         return query ;
     }
 
-    protected Query preParseQuery(String queryString, Analyzer analyzer) throws ParseException {
-        return parseQuery(queryString, analyzer);
-    }
-
     private List<Map<String, Node>> get$(IndexReader indexReader, String uri) throws ParseException, IOException {
         String escaped = QueryParserBase.escape(uri) ;
         String qs = docDef.getEntityField() + ":" + escaped ;
-        Query query = preParseQuery(qs, queryAnalyzer) ;
+        Query query = parseQuery(qs, queryAnalyzer) ;
         IndexSearcher indexSearcher = new IndexSearcher(indexReader) ;
         ScoreDoc[] sDocs = indexSearcher.search(query, 1).scoreDocs ;
         List<Map<String, Node>> records = new ArrayList<>() ;
@@ -369,7 +386,7 @@ public class TextIndexLucene implements TextIndex {
 
     private List<TextHit> query$(IndexReader indexReader, Node property, String qs, int limit) throws ParseException, IOException {
         IndexSearcher indexSearcher = new IndexSearcher(indexReader) ;
-        Query query = preParseQuery(qs, queryAnalyzer) ;
+        Query query = parseQuery(qs, queryAnalyzer) ;
         if ( limit <= 0 )
             limit = MAX_N ;
         ScoreDoc[] sDocs = indexSearcher.search(query, limit).scoreDocs ;

http://git-wip-us.apache.org/repos/asf/jena/blob/a7c37dc4/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLuceneMultilingual.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLuceneMultilingual.java b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLuceneMultilingual.java
deleted file mode 100644
index ec7a8bb..0000000
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLuceneMultilingual.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.query.text;
-
-import org.apache.jena.query.text.analyzer.Util;
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.index.Term;
-import org.apache.lucene.queryparser.classic.ParseException;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.store.Directory;
-
-import java.io.IOException;
-
-public class TextIndexLuceneMultilingual extends TextIndexLucene {
-
-    /**
-     * Constructs a new TextIndexLuceneMultilingual.
-     *
-     * @param directory The Lucene Directory for the index
-     * @param config The config definition for the index instantiation.
-     */
-    public TextIndexLuceneMultilingual(Directory directory, TextIndexConfig config) {
-        super(directory, config) ;
-
-        //multilingual index cannot work without lang field
-        if (config.getEntDef().getLangField() == null)
-            config.getEntDef().setLangField("lang");
-    }
-
-    @Override
-    protected void updateDocument(Entity entity) throws IOException {
-        Document doc = doc(entity);
-        Term term = new Term(getDocDef().getEntityField(), entity.getId());
-        Analyzer analyzer = Util.getLocalizedAnalyzer(entity.getLanguage());
-        if (analyzer == null)
-            analyzer = getAnalyzer();
-        getIndexWriter().updateDocument(term, doc, analyzer) ;
-    }
-
-    @Override
-    protected void addDocument(Entity entity) throws IOException {
-        Document doc = doc(entity) ;
-        Analyzer analyzer = Util.getLocalizedAnalyzer(entity.getLanguage());
-        if (analyzer == null)
-            analyzer = getAnalyzer();
-        getIndexWriter().addDocument(doc, analyzer) ;
-    }
-
-    @Override
-    protected Query preParseQuery(String queryString, Analyzer analyzer) throws ParseException {
-        if (queryString.contains(getDocDef().getLangField() + ":")) {
-            String lang = queryString.substring(queryString.lastIndexOf(":") + 1);
-            if (!"*".equals(lang))
-                analyzer = Util.getLocalizedAnalyzer(lang);
-        }
-        return super.preParseQuery(queryString, analyzer);
-    }
-}

http://git-wip-us.apache.org/repos/asf/jena/blob/a7c37dc4/jena-text/src/main/java/org/apache/jena/query/text/analyzer/ConfigurableAnalyzer.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/analyzer/ConfigurableAnalyzer.java b/jena-text/src/main/java/org/apache/jena/query/text/analyzer/ConfigurableAnalyzer.java
index ada3361..8960ddb 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/analyzer/ConfigurableAnalyzer.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/analyzer/ConfigurableAnalyzer.java
@@ -18,7 +18,6 @@
 
 package org.apache.jena.query.text.analyzer ;
 
-import java.io.Reader ;
 import java.util.List ;
 
 import org.apache.jena.query.text.TextIndexException;
@@ -33,7 +32,6 @@ import org.apache.lucene.analysis.core.WhitespaceTokenizer ;
 import org.apache.lucene.analysis.miscellaneous.ASCIIFoldingFilter;
 import org.apache.lucene.analysis.standard.StandardFilter;
 import org.apache.lucene.analysis.standard.StandardTokenizer;
-import org.apache.lucene.util.Version ;
 
 
 /** 
@@ -42,20 +40,19 @@ import org.apache.lucene.util.Version ;
  */
 
 public class ConfigurableAnalyzer extends Analyzer {
-        private final Version version;
         private final String tokenizer;
         private final List<String> filters;
         
-        private Tokenizer getTokenizer(String tokenizerName, Reader reader) {
+        private Tokenizer getTokenizer(String tokenizerName) {
                 switch(tokenizerName) {
                         case "KeywordTokenizer":
-                                return new KeywordTokenizer(reader);
+                                return new KeywordTokenizer();
                         case "LetterTokenizer":
-                                return new LetterTokenizer(version, reader);
+                                return new LetterTokenizer();
                         case "StandardTokenizer":
-                                return new StandardTokenizer(version, reader);
+                                return new StandardTokenizer();
                         case "WhitespaceTokenizer":
-                                return new WhitespaceTokenizer(version, reader);
+                                return new WhitespaceTokenizer();
                         default:
                                 throw new TextIndexException("Unknown tokenizer : " + tokenizerName);
                 }
@@ -66,23 +63,22 @@ public class ConfigurableAnalyzer extends Analyzer {
                         case "ASCIIFoldingFilter":
                                 return new ASCIIFoldingFilter(source);
                         case "LowerCaseFilter":
-                                return new LowerCaseFilter(version, source);
+                                return new LowerCaseFilter(source);
                         case "StandardFilter":
-                                return new StandardFilter(version, source);
+                                return new StandardFilter(source);
                         default:
                                 throw new TextIndexException("Unknown filter : " + filterName);
                 }
         }
         
-        public ConfigurableAnalyzer(Version ver, String tokenizer, List<String> filters) {
-                this.version = ver;
+        public ConfigurableAnalyzer(String tokenizer, List<String> filters) {
                 this.tokenizer = tokenizer;
                 this.filters = filters;
         }
 
         @Override
-        protected TokenStreamComponents createComponents(String fieldName, Reader reader) {
-                Tokenizer source = getTokenizer(this.tokenizer, reader);
+        protected TokenStreamComponents createComponents(String fieldName) {
+                Tokenizer source = getTokenizer(this.tokenizer);
                 TokenStream stream = source;
                 for (String filter : this.filters) {
                         stream = getTokenFilter(filter, stream);

http://git-wip-us.apache.org/repos/asf/jena/blob/a7c37dc4/jena-text/src/main/java/org/apache/jena/query/text/analyzer/LowerCaseKeywordAnalyzer.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/analyzer/LowerCaseKeywordAnalyzer.java b/jena-text/src/main/java/org/apache/jena/query/text/analyzer/LowerCaseKeywordAnalyzer.java
index 2b168b4..071569b 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/analyzer/LowerCaseKeywordAnalyzer.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/analyzer/LowerCaseKeywordAnalyzer.java
@@ -18,12 +18,9 @@
 
 package org.apache.jena.query.text.analyzer ;
 
-import java.io.Reader ;
-
 import org.apache.lucene.analysis.Analyzer ;
 import org.apache.lucene.analysis.core.KeywordTokenizer ;
 import org.apache.lucene.analysis.core.LowerCaseFilter ;
-import org.apache.lucene.util.Version ;
 
 
 /** 
@@ -33,16 +30,11 @@ import org.apache.lucene.util.Version ;
  */
 
 public class LowerCaseKeywordAnalyzer extends Analyzer {
-        private Version version;
-        
-        public LowerCaseKeywordAnalyzer(Version ver) {
-                this.version = ver;
-        }
 
         @Override
-        protected TokenStreamComponents createComponents(String fieldName, Reader reader) {
-                KeywordTokenizer source = new KeywordTokenizer(reader);
-                LowerCaseFilter filter = new LowerCaseFilter(version, source);
+        protected TokenStreamComponents createComponents(String fieldName) {
+                KeywordTokenizer source = new KeywordTokenizer();
+                LowerCaseFilter filter = new LowerCaseFilter(source);
                 return new TokenStreamComponents(source, filter);
         }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/a7c37dc4/jena-text/src/main/java/org/apache/jena/query/text/analyzer/MultilingualAnalyzer.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/analyzer/MultilingualAnalyzer.java b/jena-text/src/main/java/org/apache/jena/query/text/analyzer/MultilingualAnalyzer.java
new file mode 100644
index 0000000..1ba21d1
--- /dev/null
+++ b/jena-text/src/main/java/org/apache/jena/query/text/analyzer/MultilingualAnalyzer.java
@@ -0,0 +1,54 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.query.text.analyzer ;
+
+import org.apache.lucene.analysis.Analyzer ;
+import org.apache.lucene.analysis.DelegatingAnalyzerWrapper;
+
+
+/** 
+ * Lucene Analyzer implementation that delegates to a language-specific
+ * Analyzer based on a field name suffix: e.g. field="label_en" will use
+ * an EnglishAnalyzer.
+ */
+
+public class MultilingualAnalyzer extends DelegatingAnalyzerWrapper {
+        private Analyzer defaultAnalyzer;
+
+        public MultilingualAnalyzer(Analyzer defaultAnalyzer) {
+                super(PER_FIELD_REUSE_STRATEGY);
+                this.defaultAnalyzer = defaultAnalyzer;
+        }
+
+        @Override
+        protected Analyzer getWrappedAnalyzer(String fieldName) {
+                int idx = fieldName.lastIndexOf("_");
+                if (idx == -1) { // not language-specific, e.g. "label"
+                        return defaultAnalyzer;
+                }
+                String lang = fieldName.substring(idx+1);
+                Analyzer analyzer = Util.getLocalizedAnalyzer(lang);
+                return (analyzer != null ? analyzer : defaultAnalyzer);
+        }
+
+        @Override
+        public String toString() {
+                return "MultilingualAnalyzer(default=" + defaultAnalyzer + ")";
+        }
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/a7c37dc4/jena-text/src/main/java/org/apache/jena/query/text/analyzer/Util.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/analyzer/Util.java b/jena-text/src/main/java/org/apache/jena/query/text/analyzer/Util.java
index c8e3490..fb2582a 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/analyzer/Util.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/analyzer/Util.java
@@ -18,9 +18,7 @@
 
 package org.apache.jena.query.text.analyzer;
 
-import org.apache.jena.query.text.TextIndexLucene;
 import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.util.Version;
 import java.lang.reflect.Constructor;
 import java.util.Hashtable;
 
@@ -34,10 +32,6 @@ public class Util {
     }
 
     public static Analyzer getLocalizedAnalyzer(String lang) {
-        return getLocalizedAnalyzer(lang, TextIndexLucene.VER);
-    }
-
-    public static Analyzer getLocalizedAnalyzer(String lang, Version ver) {
         if (lang == null)
             return null;
 
@@ -48,8 +42,8 @@ public class Util {
             Class<?> className = analyzersClasses.get(lang);
             if (className == null)
                 return null;
-            Constructor<?> constructor = className.getConstructor(Version.class);
-            Analyzer analyzer = (Analyzer)constructor.newInstance(ver);
+            Constructor<?> constructor = className.getConstructor();
+            Analyzer analyzer = (Analyzer)constructor.newInstance();
             cache.put(lang, analyzer);
             return analyzer;
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/jena/blob/a7c37dc4/jena-text/src/main/java/org/apache/jena/query/text/assembler/ConfigurableAnalyzerAssembler.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/assembler/ConfigurableAnalyzerAssembler.java b/jena-text/src/main/java/org/apache/jena/query/text/assembler/ConfigurableAnalyzerAssembler.java
index d336ed8..5ec96eb 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/assembler/ConfigurableAnalyzerAssembler.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/assembler/ConfigurableAnalyzerAssembler.java
@@ -25,7 +25,6 @@ import org.apache.jena.assembler.Assembler;
 import org.apache.jena.assembler.Mode;
 import org.apache.jena.assembler.assemblers.AssemblerBase;
 import org.apache.jena.query.text.TextIndexException;
-import org.apache.jena.query.text.TextIndexLucene;
 import org.apache.jena.query.text.analyzer.ConfigurableAnalyzer;
 import org.apache.jena.rdf.model.RDFNode;
 import org.apache.jena.rdf.model.Resource;
@@ -64,7 +63,7 @@ public class ConfigurableAnalyzerAssembler extends AssemblerBase {
             } else {
                 filters = new ArrayList<>();
             }
-            return new ConfigurableAnalyzer(TextIndexLucene.VER, tokenizer, filters);
+            return new ConfigurableAnalyzer(tokenizer, filters);
         } else {
             throw new TextIndexException("text:tokenizer setting is required by ConfigurableAnalyzer");
         }

http://git-wip-us.apache.org/repos/asf/jena/blob/a7c37dc4/jena-text/src/main/java/org/apache/jena/query/text/assembler/LocalizedAnalyzerAssembler.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/assembler/LocalizedAnalyzerAssembler.java b/jena-text/src/main/java/org/apache/jena/query/text/assembler/LocalizedAnalyzerAssembler.java
index b9d83de..f26adc4 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/assembler/LocalizedAnalyzerAssembler.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/assembler/LocalizedAnalyzerAssembler.java
@@ -22,7 +22,6 @@ import org.apache.jena.assembler.Assembler;
 import org.apache.jena.assembler.Mode;
 import org.apache.jena.assembler.assemblers.AssemblerBase;
 import org.apache.jena.query.text.TextIndexException;
-import org.apache.jena.query.text.TextIndexLucene;
 import org.apache.jena.query.text.analyzer.Util;
 import org.apache.jena.rdf.model.RDFNode;
 import org.apache.jena.rdf.model.Resource;
@@ -52,9 +51,9 @@ public class LocalizedAnalyzerAssembler extends AssemblerBase {
                 throw new TextIndexException("text:language property must be a string : " + node);
             }
             String lang = node.toString();
-            return Util.getLocalizedAnalyzer(lang, TextIndexLucene.VER);
+            return Util.getLocalizedAnalyzer(lang);
         } else {
-            return new StandardAnalyzer(TextIndexLucene.VER);
+            return new StandardAnalyzer();
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/a7c37dc4/jena-text/src/main/java/org/apache/jena/query/text/assembler/LowerCaseKeywordAnalyzerAssembler.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/assembler/LowerCaseKeywordAnalyzerAssembler.java b/jena-text/src/main/java/org/apache/jena/query/text/assembler/LowerCaseKeywordAnalyzerAssembler.java
index be64d52..9ad67f4 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/assembler/LowerCaseKeywordAnalyzerAssembler.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/assembler/LowerCaseKeywordAnalyzerAssembler.java
@@ -21,7 +21,6 @@ package org.apache.jena.query.text.assembler ;
 import org.apache.jena.assembler.Assembler ;
 import org.apache.jena.assembler.Mode ;
 import org.apache.jena.assembler.assemblers.AssemblerBase ;
-import org.apache.jena.query.text.TextIndexLucene;
 import org.apache.jena.query.text.analyzer.LowerCaseKeywordAnalyzer;
 import org.apache.jena.rdf.model.Resource ;
 import org.apache.lucene.analysis.Analyzer;
@@ -42,6 +41,6 @@ public class LowerCaseKeywordAnalyzerAssembler extends AssemblerBase {
 
     @Override
     public Analyzer open(Assembler a, Resource root, Mode mode) {
-        return new LowerCaseKeywordAnalyzer(TextIndexLucene.VER);
+        return new LowerCaseKeywordAnalyzer();
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/a7c37dc4/jena-text/src/main/java/org/apache/jena/query/text/assembler/SimpleAnalyzerAssembler.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/assembler/SimpleAnalyzerAssembler.java b/jena-text/src/main/java/org/apache/jena/query/text/assembler/SimpleAnalyzerAssembler.java
index 39b4b4a..d0f6fe7 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/assembler/SimpleAnalyzerAssembler.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/assembler/SimpleAnalyzerAssembler.java
@@ -21,7 +21,6 @@ package org.apache.jena.query.text.assembler ;
 import org.apache.jena.assembler.Assembler ;
 import org.apache.jena.assembler.Mode ;
 import org.apache.jena.assembler.assemblers.AssemblerBase ;
-import org.apache.jena.query.text.TextIndexLucene;
 import org.apache.jena.rdf.model.Resource ;
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.core.SimpleAnalyzer;
@@ -43,6 +42,6 @@ public class SimpleAnalyzerAssembler extends AssemblerBase {
 
     @Override
     public Analyzer open(Assembler a, Resource root, Mode mode) {
-        return new SimpleAnalyzer(TextIndexLucene.VER);
+        return new SimpleAnalyzer();
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/a7c37dc4/jena-text/src/main/java/org/apache/jena/query/text/assembler/StandardAnalyzerAssembler.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/assembler/StandardAnalyzerAssembler.java b/jena-text/src/main/java/org/apache/jena/query/text/assembler/StandardAnalyzerAssembler.java
index bfe1db5..e221d19 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/assembler/StandardAnalyzerAssembler.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/assembler/StandardAnalyzerAssembler.java
@@ -25,7 +25,6 @@ import org.apache.jena.assembler.Assembler ;
 import org.apache.jena.assembler.Mode ;
 import org.apache.jena.assembler.assemblers.AssemblerBase ;
 import org.apache.jena.query.text.TextIndexException;
-import org.apache.jena.query.text.TextIndexLucene;
 import org.apache.jena.rdf.model.Literal ;
 import org.apache.jena.rdf.model.RDFNode ;
 import org.apache.jena.rdf.model.Resource ;
@@ -56,7 +55,7 @@ public class StandardAnalyzerAssembler extends AssemblerBase {
         if (root.hasProperty(TextVocab.pStopWords)) {
             return analyzerWithStopWords(root);
         } else {
-            return new StandardAnalyzer(TextIndexLucene.VER);
+            return new StandardAnalyzer();
         }
     }
 
@@ -66,11 +65,11 @@ public class StandardAnalyzerAssembler extends AssemblerBase {
             throw new TextIndexException("text:stopWords property takes a list as a value : " + node);
         }
         CharArraySet stopWords = toCharArraySet((Resource) node);
-        return new StandardAnalyzer(TextIndexLucene.VER, stopWords);
+        return new StandardAnalyzer(stopWords);
     }
 
     private CharArraySet toCharArraySet(Resource list) {
-        return new CharArraySet(TextIndexLucene.VER, toList(list), false);
+        return new CharArraySet(toList(list), false);
     }
 
     private List<String> toList(Resource list) {

http://git-wip-us.apache.org/repos/asf/jena/blob/a7c37dc4/jena-text/src/main/java/org/apache/jena/query/text/assembler/TextIndexLuceneAssembler.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/assembler/TextIndexLuceneAssembler.java b/jena-text/src/main/java/org/apache/jena/query/text/assembler/TextIndexLuceneAssembler.java
index 1af7e9d..a4f2949 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/assembler/TextIndexLuceneAssembler.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/assembler/TextIndexLuceneAssembler.java
@@ -48,7 +48,6 @@ public class TextIndexLuceneAssembler extends AssemblerBase {
         .
     */
     
-    @SuppressWarnings("resource")
     @Override
     public TextIndex open(Assembler a, Resource root, Mode mode) {
         try {
@@ -64,13 +63,13 @@ public class TextIndexLuceneAssembler extends AssemblerBase {
                     directory = new RAMDirectory() ;
                 } else {
                     File dir = new File(literalValue) ;
-                    directory = FSDirectory.open(dir) ;
+                    directory = FSDirectory.open(dir.toPath()) ;
                 }
             } else {
                 Resource x = n.asResource() ;
                 String path = IRILib.IRIToFilename(x.getURI()) ;
                 File dir = new File(path) ;
-                directory = FSDirectory.open(dir) ;
+                directory = FSDirectory.open(dir.toPath()) ;
             }
 
             Analyzer analyzer = null;

http://git-wip-us.apache.org/repos/asf/jena/blob/a7c37dc4/jena-text/src/test/java/org/apache/jena/query/text/TestLuceneWithMultipleThreads.java
----------------------------------------------------------------------
diff --git a/jena-text/src/test/java/org/apache/jena/query/text/TestLuceneWithMultipleThreads.java b/jena-text/src/test/java/org/apache/jena/query/text/TestLuceneWithMultipleThreads.java
index 2b97064..223857c 100644
--- a/jena-text/src/test/java/org/apache/jena/query/text/TestLuceneWithMultipleThreads.java
+++ b/jena-text/src/test/java/org/apache/jena/query/text/TestLuceneWithMultipleThreads.java
@@ -35,7 +35,6 @@ import org.apache.jena.sparql.core.DatasetGraphFactory ;
 import org.apache.jena.vocabulary.RDFS ;
 import org.apache.lucene.analysis.standard.StandardAnalyzer ;
 import org.apache.lucene.store.RAMDirectory ;
-import org.apache.lucene.util.Version ;
 import org.junit.Test ;
 
 /**
@@ -49,7 +48,7 @@ public class TestLuceneWithMultipleThreads
         entDef = new EntityDefinition("uri", "label");
         entDef.setGraphField("graph");
         entDef.setPrimaryPredicate(RDFS.label);
-        StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_4_9);
+        StandardAnalyzer analyzer = new StandardAnalyzer();
         entDef.setAnalyzer("label", analyzer);
     }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/a7c37dc4/jena-text/src/test/java/org/apache/jena/query/text/TextSearchUtil.java
----------------------------------------------------------------------
diff --git a/jena-text/src/test/java/org/apache/jena/query/text/TextSearchUtil.java b/jena-text/src/test/java/org/apache/jena/query/text/TextSearchUtil.java
index 8f132f7..c5bb0a4 100644
--- a/jena-text/src/test/java/org/apache/jena/query/text/TextSearchUtil.java
+++ b/jena-text/src/test/java/org/apache/jena/query/text/TextSearchUtil.java
@@ -28,11 +28,9 @@ import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.FSDirectory;
-import org.apache.lucene.util.Version;
 
 public class TextSearchUtil {
-    private static Version VER = TextIndexLucene.VER ;
-    private static final Analyzer analyzer = new StandardAnalyzer(VER);
+    private static final Analyzer analyzer = new StandardAnalyzer();
 
     public static void emptyAndDeleteDirectory(File dir) {
         File[] contents = dir.listFiles() ;
@@ -50,8 +48,8 @@ public class TextSearchUtil {
 
     public static void createEmptyIndex(File indexDir) {
         try {
-            Directory directory = FSDirectory.open(indexDir) ;
-            IndexWriterConfig wConfig = new IndexWriterConfig(VER, analyzer) ;
+            Directory directory = FSDirectory.open(indexDir.toPath()) ;
+            IndexWriterConfig wConfig = new IndexWriterConfig(analyzer) ;
             // force creation of the index files
             try(IndexWriter indexWriter = new IndexWriter(directory, wConfig)) {
             }


[4/4] jena git commit: Merge branch 'jena-1250-lucene6'

Posted by os...@apache.org.
Merge branch 'jena-1250-lucene6'


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/973de6be
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/973de6be
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/973de6be

Branch: refs/heads/master
Commit: 973de6be57a7107454531242b2065034bd1a45e6
Parents: c5c15bb 8bba58b
Author: Osma Suominen <os...@helsinki.fi>
Authored: Fri Mar 10 10:38:27 2017 +0200
Committer: Osma Suominen <os...@helsinki.fi>
Committed: Fri Mar 10 10:38:27 2017 +0200

----------------------------------------------------------------------
 jena-parent/pom.xml                             | 12 +++-
 jena-spatial/pom.xml                            |  7 +-
 .../main/java/examples/JenaSpatialExample1.java |  2 +-
 .../src/main/java/jena/spatialindexdump.java    |  2 +-
 .../jena/query/spatial/DistanceUnitsUtils.java  |  2 +-
 .../jena/query/spatial/EntityDefinition.java    |  2 +-
 .../apache/jena/query/spatial/SpatialIndex.java |  2 +-
 .../jena/query/spatial/SpatialIndexContext.java |  2 +-
 .../jena/query/spatial/SpatialIndexLucene.java  | 18 ++---
 .../jena/query/spatial/SpatialIndexSolr.java    |  2 +-
 .../apache/jena/query/spatial/SpatialQuery.java |  4 +-
 .../assembler/EntityDefinitionAssembler.java    |  2 +-
 .../assembler/SpatialIndexLuceneAssembler.java  |  3 +-
 .../query/spatial/pfunction/SpatialMatch.java   |  2 +-
 .../AbstractTestIndexingSpatialData.java        |  2 +-
 .../jena/query/spatial/SpatialSearchUtil.java   | 13 ++--
 .../TestEntityDefinitionAssembler.java          |  4 +-
 jena-text/src/main/java/jena/textindexdump.java |  2 +-
 .../jena/query/text/TextDatasetFactory.java     |  7 +-
 .../apache/jena/query/text/TextIndexLucene.java | 55 +++++++++-----
 .../query/text/TextIndexLuceneMultilingual.java | 75 --------------------
 .../text/analyzer/ConfigurableAnalyzer.java     | 33 +++++----
 .../text/analyzer/LowerCaseKeywordAnalyzer.java | 14 +---
 .../text/analyzer/MultilingualAnalyzer.java     | 54 ++++++++++++++
 .../apache/jena/query/text/analyzer/Util.java   | 10 +--
 .../ConfigurableAnalyzerAssembler.java          |  3 +-
 .../assembler/LocalizedAnalyzerAssembler.java   |  5 +-
 .../LowerCaseKeywordAnalyzerAssembler.java      |  3 +-
 .../text/assembler/SimpleAnalyzerAssembler.java |  3 +-
 .../assembler/StandardAnalyzerAssembler.java    |  9 ++-
 .../assembler/TextIndexLuceneAssembler.java     |  5 +-
 .../text/TestLuceneWithMultipleThreads.java     |  3 +-
 .../apache/jena/query/text/TextSearchUtil.java  |  8 +--
 33 files changed, 176 insertions(+), 194 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/973de6be/jena-parent/pom.xml
----------------------------------------------------------------------


[3/4] jena git commit: Add more informative exception message when trying to use an old Lucene index. (JENA-1250)

Posted by os...@apache.org.
Add more informative exception message when trying to use an old Lucene index. (JENA-1250)


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/8bba58bb
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/8bba58bb
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/8bba58bb

Branch: refs/heads/master
Commit: 8bba58bb1b17d75ec9a8e1967a0e466f7e45898f
Parents: ac06feb
Author: Osma Suominen <os...@helsinki.fi>
Authored: Fri Mar 10 10:35:24 2017 +0200
Committer: Osma Suominen <os...@helsinki.fi>
Committed: Fri Mar 10 10:35:24 2017 +0200

----------------------------------------------------------------------
 .../java/org/apache/jena/query/spatial/SpatialIndexLucene.java   | 3 +++
 .../main/java/org/apache/jena/query/text/TextIndexLucene.java    | 4 ++++
 2 files changed, 7 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/8bba58bb/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexLucene.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexLucene.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexLucene.java
index 440df4d..26901da 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexLucene.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexLucene.java
@@ -108,6 +108,9 @@ public class SpatialIndexLucene implements SpatialIndex {
 		try {
 			IndexWriterConfig wConfig = new IndexWriterConfig(analyzer);
 			indexWriter = new IndexWriter(directory, wConfig);
+		} catch (IndexFormatTooOldException e) {
+			throw new SpatialIndexException("jena-spatial/Lucene cannot use indexes created before Jena 3.3.0. "
+	        		+ "Please rebuild your spatial index using jena.spatialindexer from Jena 3.3.0 or above.", e);
 		} catch (IOException e) {
 			exception(e);
 		}

http://git-wip-us.apache.org/repos/asf/jena/blob/8bba58bb/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
index b40ba03..31686ea 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
@@ -131,6 +131,10 @@ public class TextIndexLucene implements TextIndex {
             // Force a commit to create the index, otherwise querying before writing will cause an exception
             indexWriter.commit();
         }
+        catch (IndexFormatTooOldException e) {
+        	throw new TextIndexException("jena-text/Lucene cannot use indexes created before Jena 3.3.0. "
+        		+ "Please rebuild your text index using jena.textindexer from Jena 3.3.0 or above.", e);
+        }
         catch (IOException e)
         {
             throw new TextIndexException(e) ;


[2/4] jena git commit: Upgrade to Lucene 6.4.1 and spatial4j 0.6. Add normalize method to ConfigurableAnalyzer for Lucene 6.2+ compatibility. (JENA-1250)

Posted by os...@apache.org.
Upgrade to Lucene 6.4.1 and spatial4j 0.6. Add normalize method to ConfigurableAnalyzer for Lucene 6.2+ compatibility. (JENA-1250)


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/ac06febf
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/ac06febf
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/ac06febf

Branch: refs/heads/master
Commit: ac06febffd297cb68dfbb11c620601604f657839
Parents: a7c37dc
Author: Osma Suominen <os...@helsinki.fi>
Authored: Fri Mar 3 11:33:08 2017 +0200
Committer: Osma Suominen <os...@helsinki.fi>
Committed: Fri Mar 3 11:53:01 2017 +0200

----------------------------------------------------------------------
 jena-parent/pom.xml                                     | 12 +++++++++---
 jena-spatial/pom.xml                                    |  7 ++++++-
 .../apache/jena/query/spatial/DistanceUnitsUtils.java   |  2 +-
 .../org/apache/jena/query/spatial/EntityDefinition.java |  2 +-
 .../org/apache/jena/query/spatial/SpatialIndex.java     |  2 +-
 .../apache/jena/query/spatial/SpatialIndexContext.java  |  2 +-
 .../apache/jena/query/spatial/SpatialIndexLucene.java   |  2 +-
 .../org/apache/jena/query/spatial/SpatialIndexSolr.java |  2 +-
 .../org/apache/jena/query/spatial/SpatialQuery.java     |  4 ++--
 .../spatial/assembler/EntityDefinitionAssembler.java    |  2 +-
 .../jena/query/spatial/pfunction/SpatialMatch.java      |  2 +-
 .../query/spatial/AbstractTestIndexingSpatialData.java  |  2 +-
 .../assembler/TestEntityDefinitionAssembler.java        |  4 ++--
 .../jena/query/text/analyzer/ConfigurableAnalyzer.java  |  9 +++++++++
 .../query/text/assembler/StandardAnalyzerAssembler.java |  2 +-
 15 files changed, 38 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/ac06febf/jena-parent/pom.xml
----------------------------------------------------------------------
diff --git a/jena-parent/pom.xml b/jena-parent/pom.xml
index e801e83..5e0c8a9 100644
--- a/jena-parent/pom.xml
+++ b/jena-parent/pom.xml
@@ -72,9 +72,9 @@
     <ver.httpclient-osgi>${ver.httpclient}</ver.httpclient-osgi>
 
     <ver.commons-codec>1.10</ver.commons-codec>
-    <ver.lucene>5.5.4</ver.lucene>
+    <ver.lucene>6.4.1</ver.lucene>
     <ver.solr>4.9.1</ver.solr>
-    <ver.spatial4j>0.5</ver.spatial4j>
+    <ver.spatial4j>0.6</ver.spatial4j>
 
     <ver.mockito>1.9.5</ver.mockito>
     <ver.awaitility>1.7.0</ver.awaitility>
@@ -286,7 +286,13 @@
       </dependency>
 
       <dependency>
-        <groupId>com.spatial4j</groupId>
+        <groupId>org.apache.lucene</groupId>
+        <artifactId>lucene-spatial-extras</artifactId>
+        <version>${ver.lucene}</version>
+      </dependency>
+
+      <dependency>
+        <groupId>org.locationtech.spatial4j</groupId>
         <artifactId>spatial4j</artifactId>
         <version>${ver.spatial4j}</version>
       </dependency>

http://git-wip-us.apache.org/repos/asf/jena/blob/ac06febf/jena-spatial/pom.xml
----------------------------------------------------------------------
diff --git a/jena-spatial/pom.xml b/jena-spatial/pom.xml
index 59aad5e..fc8f948 100644
--- a/jena-spatial/pom.xml
+++ b/jena-spatial/pom.xml
@@ -75,6 +75,11 @@
 
     <dependency>
       <groupId>org.apache.lucene</groupId>
+      <artifactId>lucene-spatial-extras</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-analyzers-common</artifactId>
     </dependency>
 
@@ -84,7 +89,7 @@
     </dependency>
 
     <dependency>
-      <groupId>com.spatial4j</groupId>
+      <groupId>org.locationtech.spatial4j</groupId>
       <artifactId>spatial4j</artifactId>
     </dependency>
     

http://git-wip-us.apache.org/repos/asf/jena/blob/ac06febf/jena-spatial/src/main/java/org/apache/jena/query/spatial/DistanceUnitsUtils.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/DistanceUnitsUtils.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/DistanceUnitsUtils.java
index 2d1ab58..e0a4c25 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/DistanceUnitsUtils.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/DistanceUnitsUtils.java
@@ -21,7 +21,7 @@ package org.apache.jena.query.spatial;
 import java.util.ArrayList;
 import java.util.List;
 
-import com.spatial4j.core.distance.DistanceUtils;
+import org.locationtech.spatial4j.distance.DistanceUtils;
 
 public class DistanceUnitsUtils {
 

http://git-wip-us.apache.org/repos/asf/jena/blob/ac06febf/jena-spatial/src/main/java/org/apache/jena/query/spatial/EntityDefinition.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/EntityDefinition.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/EntityDefinition.java
index 58f100b..975161b 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/EntityDefinition.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/EntityDefinition.java
@@ -28,7 +28,7 @@ import org.apache.jena.rdf.model.Property ;
 import org.apache.jena.rdf.model.Resource ;
 import org.apache.jena.rdf.model.ResourceFactory ;
 
-import com.spatial4j.core.context.SpatialContextFactory;
+import org.locationtech.spatial4j.context.SpatialContextFactory;
 
 /**
  * Definition of a "document"

http://git-wip-us.apache.org/repos/asf/jena/blob/ac06febf/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndex.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndex.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndex.java
index 9c9bf6f..ea7d240 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndex.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndex.java
@@ -24,7 +24,7 @@ import org.apache.jena.atlas.lib.Closeable;
 import org.apache.jena.graph.Node ;
 import org.apache.lucene.spatial.query.SpatialOperation;
 
-import com.spatial4j.core.shape.Shape;
+import org.locationtech.spatial4j.shape.Shape;
 
 /** SpatialIndex abstraction */ 
 public interface SpatialIndex extends Closeable //, Transactional 

http://git-wip-us.apache.org/repos/asf/jena/blob/ac06febf/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexContext.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexContext.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexContext.java
index 2fc7953..fe55656 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexContext.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexContext.java
@@ -27,7 +27,7 @@ import java.util.Set;
 import org.apache.jena.atlas.logging.Log ;
 import org.apache.jena.graph.Node ;
 
-import com.spatial4j.core.shape.Shape;
+import org.locationtech.spatial4j.shape.Shape;
 
 public class SpatialIndexContext {
 

http://git-wip-us.apache.org/repos/asf/jena/blob/ac06febf/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexLucene.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexLucene.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexLucene.java
index 85a8bb4..440df4d 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexLucene.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexLucene.java
@@ -40,7 +40,7 @@ import org.apache.lucene.store.Directory ;
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
 
-import com.spatial4j.core.shape.Shape ;
+import org.locationtech.spatial4j.shape.Shape ;
 
 public class SpatialIndexLucene implements SpatialIndex {
 	private static Logger log = LoggerFactory

http://git-wip-us.apache.org/repos/asf/jena/blob/ac06febf/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexSolr.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexSolr.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexSolr.java
index 507e6ee..49a6fb8 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexSolr.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialIndexSolr.java
@@ -38,7 +38,7 @@ import org.apache.solr.common.SolrInputDocument ;
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
 
-import com.spatial4j.core.shape.Shape ;
+import org.locationtech.spatial4j.shape.Shape ;
 
 public class SpatialIndexSolr implements SpatialIndex {
 	private static Logger log = LoggerFactory.getLogger(SpatialIndexSolr.class);

http://git-wip-us.apache.org/repos/asf/jena/blob/ac06febf/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialQuery.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialQuery.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialQuery.java
index b860f2f..058e1bd 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialQuery.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/SpatialQuery.java
@@ -18,7 +18,7 @@
 
 package org.apache.jena.query.spatial;
 
-import com.spatial4j.core.context.SpatialContext ;
+import org.locationtech.spatial4j.context.SpatialContext ;
 
 import org.apache.jena.query.spatial.assembler.SpatialAssembler ;
 import org.apache.jena.query.spatial.pfunction.library.* ;
@@ -51,7 +51,7 @@ public class SpatialQuery
     public static SpatialContext ctx = SpatialContext.GEO;
     
     // an optional feature for WKT literals, loaded when necessary, but not required
-    public static final String JTS_SPATIAL_CONTEXT_FACTORY_CLASS = "com.spatial4j.core.context.jts.JtsSpatialContextFactory"; 
+    public static final String JTS_SPATIAL_CONTEXT_FACTORY_CLASS = "org.locationtech.spatial4j.context.jts.JtsSpatialContextFactory"; 
     
     static { JenaSystem.init(); }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/ac06febf/jena-spatial/src/main/java/org/apache/jena/query/spatial/assembler/EntityDefinitionAssembler.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/assembler/EntityDefinitionAssembler.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/assembler/EntityDefinitionAssembler.java
index dc19ee5..d32f722 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/assembler/EntityDefinitionAssembler.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/assembler/EntityDefinitionAssembler.java
@@ -48,7 +48,7 @@ public class EntityDefinitionAssembler extends AssemblerBase implements Assemble
     ) ;
     spatial:hasWKTPredicates (<#wkt_1> <#wkt_2>) ;
     spatial:spatialContextFactory
-         "com.spatial4j.core.context.jts.JtsSpatialContextFactory"  .
+         "org.locationtech.spatial4j.context.jts.JtsSpatialContextFactory"  .
     */
     
     @Override

http://git-wip-us.apache.org/repos/asf/jena/blob/ac06febf/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/SpatialMatch.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/SpatialMatch.java b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/SpatialMatch.java
index 0d8275c..3c0c660 100644
--- a/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/SpatialMatch.java
+++ b/jena-spatial/src/main/java/org/apache/jena/query/spatial/pfunction/SpatialMatch.java
@@ -22,7 +22,7 @@ import org.apache.jena.query.spatial.DistanceUnitsUtils;
 import org.apache.jena.query.spatial.SpatialQuery;
 import org.apache.lucene.spatial.query.SpatialOperation;
 
-import com.spatial4j.core.shape.Shape;
+import org.locationtech.spatial4j.shape.Shape;
 
 public class SpatialMatch {
 

http://git-wip-us.apache.org/repos/asf/jena/blob/ac06febf/jena-spatial/src/test/java/org/apache/jena/query/spatial/AbstractTestIndexingSpatialData.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/test/java/org/apache/jena/query/spatial/AbstractTestIndexingSpatialData.java b/jena-spatial/src/test/java/org/apache/jena/query/spatial/AbstractTestIndexingSpatialData.java
index 000b6ff..864b16b 100644
--- a/jena-spatial/src/test/java/org/apache/jena/query/spatial/AbstractTestIndexingSpatialData.java
+++ b/jena-spatial/src/test/java/org/apache/jena/query/spatial/AbstractTestIndexingSpatialData.java
@@ -26,7 +26,7 @@ import org.apache.jena.atlas.lib.StrUtils;
 import org.junit.Test;
 import static org.junit.Assert.fail;
 
-import com.spatial4j.core.exception.InvalidShapeException;
+import org.locationtech.spatial4j.exception.InvalidShapeException;
 
 public class AbstractTestIndexingSpatialData extends
 		AbstractTestDatasetWithSpatialIndex {

http://git-wip-us.apache.org/repos/asf/jena/blob/ac06febf/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestEntityDefinitionAssembler.java
----------------------------------------------------------------------
diff --git a/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestEntityDefinitionAssembler.java b/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestEntityDefinitionAssembler.java
index 12376b3..4e2c4d5 100644
--- a/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestEntityDefinitionAssembler.java
+++ b/jena-spatial/src/test/java/org/apache/jena/query/spatial/assembler/TestEntityDefinitionAssembler.java
@@ -105,10 +105,10 @@ public class TestEntityDefinitionAssembler {
 		EntityDefinitionAssembler emAssembler = new EntityDefinitionAssembler();
 		emAssembler.open(null, spec3, null);
 		if (jts_lib_ready) {
-			assertEquals("com.spatial4j.core.context.jts.JtsSpatialContext",
+			assertEquals("org.locationtech.spatial4j.context.jts.JtsSpatialContext",
 					SpatialQuery.ctx.getClass().getName());
 		} else {
-			assertEquals("com.spatial4j.core.context.SpatialContext",
+			assertEquals("org.locationtech.spatial4j.context.SpatialContext",
 					SpatialQuery.ctx.getClass().getName());
 		}
 

http://git-wip-us.apache.org/repos/asf/jena/blob/ac06febf/jena-text/src/main/java/org/apache/jena/query/text/analyzer/ConfigurableAnalyzer.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/analyzer/ConfigurableAnalyzer.java b/jena-text/src/main/java/org/apache/jena/query/text/analyzer/ConfigurableAnalyzer.java
index 8960ddb..2008445 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/analyzer/ConfigurableAnalyzer.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/analyzer/ConfigurableAnalyzer.java
@@ -86,4 +86,13 @@ public class ConfigurableAnalyzer extends Analyzer {
                 return new TokenStreamComponents(source, stream);
         }
 
+        @Override
+        protected TokenStream normalize(String fieldName, TokenStream in) {
+                TokenStream stream = in;
+                for (String filter : this.filters) {
+                        stream = getTokenFilter(filter, stream);
+                }
+                return stream;
+        }
+
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/ac06febf/jena-text/src/main/java/org/apache/jena/query/text/assembler/StandardAnalyzerAssembler.java
----------------------------------------------------------------------
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/assembler/StandardAnalyzerAssembler.java b/jena-text/src/main/java/org/apache/jena/query/text/assembler/StandardAnalyzerAssembler.java
index e221d19..a4e0070 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/assembler/StandardAnalyzerAssembler.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/assembler/StandardAnalyzerAssembler.java
@@ -32,7 +32,7 @@ import org.apache.jena.rdf.model.Statement ;
 import org.apache.jena.vocabulary.RDF ;
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.standard.StandardAnalyzer;
-import org.apache.lucene.analysis.util.CharArraySet;
+import org.apache.lucene.analysis.CharArraySet;
 
 /**
  * Assembler to create standard analyzers with keyword list.