Mercurial Hosting > luan
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) |