comparison 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
comparison
equal deleted inserted replaced
1577:60e5c324adf9 1578:c922446f53aa
3 local error = Luan.error 3 local error = Luan.error
4 local ipairs = Luan.ipairs or error() 4 local ipairs = Luan.ipairs or error()
5 local pairs = Luan.pairs or error() 5 local pairs = Luan.pairs or error()
6 local type = Luan.type or error() 6 local type = Luan.type or error()
7 local set_metatable = Luan.set_metatable or error() 7 local set_metatable = Luan.set_metatable or error()
8 local get_local_cloned = Luan.get_local_cloned
9 local set_local_cloned = Luan.set_local_cloned
8 local Boot = require "luan:Boot.luan" 10 local Boot = require "luan:Boot.luan"
9 local Html = require "luan:Html.luan" 11 local Html = require "luan:Html.luan"
10 local Number = require "luan:Number.luan" 12 local Number = require "luan:Number.luan"
11 local integer = Number.integer or error() 13 local integer = Number.integer or error()
12 local Time = require "luan:Time.luan" 14 local Time = require "luan:Time.luan"
23 25
24 26
25 local Lucene = {} 27 local Lucene = {}
26 28
27 local indexes = {} 29 local indexes = {}
30 local indexes_mt = {
31 __index = get_local_cloned
32 __new_index = set_local_cloned
33 }
34 set_metatable(indexes,indexes_mt)
28 35
29 function Rpc.functions.lucene_backup(password,name) 36 function Rpc.functions.lucene_backup(password,name)
30 Io.password == password or error "wrong password" 37 Io.password == password or error "wrong password"
31 local index = indexes[name] or error("index not found: "..name) 38 local index = indexes[name] or error("index not found: "..name)
32 local zip_file = index.dir.parent().child("backup.zip") 39 local zip_file = index.dir.parent().child("backup.zip")
60 return f.java.file or error() 67 return f.java.file or error()
61 end 68 end
62 69
63 function Lucene.index(index_dir,options) 70 function Lucene.index(index_dir,options)
64 local index = {} 71 local index = {}
65 if options.name ~= nil then 72 local options_name = options.name
66 indexes[options.name] = index 73 options.name = nil
67 options.name = nil
68 end
69 index.dir = index_dir 74 index.dir = index_dir
70 index_dir = get_file(index_dir) 75 index_dir = get_file(index_dir)
71 options = options or {} 76 options = options or {}
72 options.log_dir = options.log_dir and get_file(options.log_dir) 77 options.log_dir = options.log_dir and get_file(options.log_dir)
73 options.log_time = options.log_time or Time.period{days=30} 78 options.log_time = options.log_time or Time.period{days=30}
74 local java_index = LuceneIndex.getLuceneIndex(index_dir,options) 79 local java_index = LuceneIndex.getLuceneIndex(index_dir,options)
75 index.java = java_index 80 index.java = java_index
81
82 if options_name ~= nil then
83 indexes[options_name] = index
84 end
76 85
77 index.indexed_fields = {} 86 index.indexed_fields = {}
78 local mt = {} 87 local mt = {}
79 set_metatable(index.indexed_fields,mt) 88 set_metatable(index.indexed_fields,mt)
80 function mt.__index(_,key) 89 function mt.__index(_,key)