diff src/luan/modules/lucene/Lucene.luan @ 1345:6f8988830098

unique LuceneIndex per dir
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 25 Feb 2019 11:00:10 -0700
parents dc2af9d5463b
children af478a1bd23d
line wrap: on
line diff
--- a/src/luan/modules/lucene/Lucene.luan	Mon Feb 25 07:00:55 2019 -0700
+++ b/src/luan/modules/lucene/Lucene.luan	Mon Feb 25 11:00:10 2019 -0700
@@ -12,10 +12,7 @@
 local Rpc = require "luan:Rpc.luan"
 local LuceneIndex = require "java:luan.modules.lucene.LuceneIndex"
 local NumberFieldParser = require "java:luan.lib.queryparser.NumberFieldParser"
-local StringFieldParser = require "java:luan.lib.queryparser.StringFieldParser"
 local SaneQueryParser = require "java:luan.lib.queryparser.SaneQueryParser"
-local Version = require "java:org.apache.lucene.util.Version"
-local EnglishAnalyzer = require "java:org.apache.lucene.analysis.en.EnglishAnalyzer"
 
 
 local Lucene = {}
@@ -23,12 +20,11 @@
 Lucene.instances = {}
 
 Lucene.type = {
-	string = LuceneIndex.STRING_FIELD_PARSER;
-	integer = NumberFieldParser.INT;
-	long = NumberFieldParser.LONG;
-	double = NumberFieldParser.DOUBLE;
-
-	english = StringFieldParser.new(EnglishAnalyzer.new(Version.LUCENE_CURRENT))
+	english = LuceneIndex.ENGLISH_FIELD_PARSER
+	string = LuceneIndex.STRING_FIELD_PARSER
+	integer = NumberFieldParser.INT
+	long = NumberFieldParser.LONG
+	double = NumberFieldParser.DOUBLE
 }
 
 Lucene.literal = SaneQueryParser.literal
@@ -36,9 +32,9 @@
 function Lucene.index(index_dir,default_type,default_fields)
 	local index = {}
 	index.dir = index_dir
-	local java_index = LuceneIndex.new(index_dir,default_type,default_fields)
+	local java_index, closer = LuceneIndex.getLuceneIndex(index_dir,default_type,default_fields)
 	index.java = java_index
---	index.indexed_fields = java_index.indexedFieldsMeta.newTable()
+	index.closer = closer or error()
 
 	index.indexed_fields = {}
 	local mt = {}
@@ -70,7 +66,7 @@
 
 	function index.close()
 		Lucene.instances[index] = nil
-		java_index.close()
+		closer.close()
 	end
 
 	function index.search( query, from, to, options )
@@ -148,7 +144,7 @@
 			local lucene_dir = uri("file:"..index.dir)
 			local before_restore = lucene_dir.parent().child("before_restore.zip")
 			index.zip(before_restore)
-			java_index.close()
+			java_index.doClose()
 			lucene_dir.delete()
 			Io.uri("os:unzip "..zip_file.canonical().to_string(),{dir=lucene_dir.parent()}).read_text()
 			java_index.reopen()