view lucene/src/luan/modules/lucene/Lucene.luan @ 546:eaef1005ab87

general lucene cleanup
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 14 Jun 2015 22:17:58 -0600
parents ddcd4296107a
children 0be287ab0309
line wrap: on
line source

java()
local Luan = require "luan:Luan"
local error = Luan.error
local LuceneIndex = require "java:luan.modules.lucene.LuceneIndex"
local NumberFieldParser = require "java:sane.lucene.queryparser.NumberFieldParser"


local M = {}

M.type = {
	string = LuceneIndex.STRING_FIELD_PARSER;
	integer = NumberFieldParser.INT;
	long = NumberFieldParser.LONG;
	double = NumberFieldParser.DOUBLE;
}

function M.index(indexDir)
	local index = {}
	local java_index = LuceneIndex.new(indexDir)
	index.indexed_fields = java_index.indexedFieldsMeta.newTable()
	index.to_string = java_index.to_string
	index.backup = java_index.backup
	index.advanced_search = java_index.advanced_search
	index.search_in_transaction = java_index.search_in_transaction
	index.delete_all = java_index.delete_all
	index.delete_documents = java_index.delete_documents
	index.save_document = java_index.save_document
	index.update_in_transaction = java_index.update_in_transaction
	index.close = java_index.close

	function index.search(query, from, to, sort)
		local results = {}
		local function fn(i,doc_fn)
			if i >= from then
				results[#results+1] = doc_fn()
			end
		end
		local total_hits = index.advanced_search(query,fn,to,sort)
		return results, total_hits
	end

	function index.get_document(query)
		local doc
		local function fn(_,doc_fn)
			doc = doc_fn()
		end
		local total_hits = index.advanced_search(query,fn,1)
		total_hits <= 1 or error( "found " .. total_hits .. " documents" )
		return doc
	end

	function index.count(query)
		return index.advanced_search(query)
	end

	return index
end

return M