Mercurial Hosting > luan
diff src/luan/modules/lucene/Lucene.luan @ 1578:c922446f53aa
immutable threading
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 08 Feb 2021 14:16:19 -0700 |
parents | 349eef23a13c |
children | 83caee2ed4ad |
line wrap: on
line diff
--- a/src/luan/modules/lucene/Lucene.luan Sun Jan 31 16:04:39 2021 -0700 +++ b/src/luan/modules/lucene/Lucene.luan Mon Feb 08 14:16:19 2021 -0700 @@ -5,6 +5,8 @@ local pairs = Luan.pairs or error() local type = Luan.type or error() local set_metatable = Luan.set_metatable or error() +local get_local_cloned = Luan.get_local_cloned +local set_local_cloned = Luan.set_local_cloned local Boot = require "luan:Boot.luan" local Html = require "luan:Html.luan" local Number = require "luan:Number.luan" @@ -25,6 +27,11 @@ local Lucene = {} local indexes = {} +local indexes_mt = { + __index = get_local_cloned + __new_index = set_local_cloned +} +set_metatable(indexes,indexes_mt) function Rpc.functions.lucene_backup(password,name) Io.password == password or error "wrong password" @@ -62,10 +69,8 @@ function Lucene.index(index_dir,options) local index = {} - if options.name ~= nil then - indexes[options.name] = index - options.name = nil - end + local options_name = options.name + options.name = nil index.dir = index_dir index_dir = get_file(index_dir) options = options or {} @@ -74,6 +79,10 @@ local java_index = LuceneIndex.getLuceneIndex(index_dir,options) index.java = java_index + if options_name ~= nil then + indexes[options_name] = index + end + index.indexed_fields = {} local mt = {} set_metatable(index.indexed_fields,mt)