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