comparison lucene/src/luan/modules/lucene/Ab_testing.luan @ 545:ddcd4296107a

clean up lucene search
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 14 Jun 2015 01:34:42 -0600
parents c5a93767cc5c
children ca169567ce07
comparison
equal deleted inserted replaced
544:c5a93767cc5c 545:ddcd4296107a
39 index.indexed_fields[field] = Lucene.type.string 39 index.indexed_fields[field] = Lucene.type.string
40 test.field = field 40 test.field = field
41 41
42 -- returns map of event name to (map of value to result) and "start_date" 42 -- returns map of event name to (map of value to result) and "start_date"
43 function test.results() 43 function test.results()
44 return index.Searcher( function(searcher) 44 local results = {}
45 local results = {} 45 for name in pairs(test.aggregator_factories) do
46 for name in pairs(test.aggregator_factories) do 46 results[name] = {}
47 results[name] = {} 47 end
48 end 48 local date_field = test.date_field
49 local date_field = test.date_field 49 local start_date = nil
50 local start_date = nil 50 for _, value in ipairs(test.values) do
51 for _, value in ipairs(test.values) do 51 local aggregators = {}
52 local aggregators = {} 52 for name, factory in pairs(test.aggregator_factories) do
53 for name, factory in pairs(test.aggregator_factories) do 53 aggregators[name] = factory()
54 aggregators[name] = factory() 54 end
55 local query = field..":"..value
56 index.advanced_search(query, function(_,doc_fn)
57 local doc = doc_fn()
58 for _, aggregator in pairs(aggregators) do
59 aggregator.aggregate(doc)
55 end 60 end
56 local query = field..":"..value 61 if date_field ~= nil then
57 searcher.search(query, function(doc) 62 local date = doc[date_field]
58 for _, aggregator in pairs(aggregators) do 63 if date ~= nil and (start_date==nil or start_date > date) then
59 aggregator.aggregate(doc) 64 start_date = date
60 end 65 end
61 if date_field ~= nil then
62 local date = doc[date_field]
63 if date ~= nil and (start_date==nil or start_date > date) then
64 start_date = date
65 end
66 end
67 end)
68 for name, aggregator in pairs(aggregators) do
69 results[name][value] = aggregator.result
70 end 66 end
71 end 67 end)
72 results.start_date = start_date 68 for name, aggregator in pairs(aggregators) do
73 return results 69 results[name][value] = aggregator.result
74 end ) 70 end
71 end
72 results.start_date = start_date
73 return results
75 end 74 end
76 75
77 function test.fancy_results() 76 function test.fancy_results()
78 local events = test.events 77 local events = test.events
79 local results = test.results() 78 local results = test.results()