blob: 611c6f2eda34629d59df0b730c132aafc9d36b51 [file] [log] [blame]
Akronb0094002017-01-02 18:01:03 +01001use Test::More;
2use Test::Krawfish;
3use strict;
4use warnings;
5
6use_ok('Krawfish::Index');
7use_ok('Krawfish::Koral::Query::Builder');
8use_ok('Krawfish::Result::Aggregate');
9use_ok('Krawfish::Result::Aggregate::Count');
10
11my $index = Krawfish::Index->new;
12
13ok_index($index, {
14 docID => 7
15} => [qw/aa bb/], 'Add complex document');
16ok_index($index, {
17 docID => 3,
18} => [qw/aa cc cc/], 'Add complex document');
19ok_index($index, {
20 docID => 1,
21} => [qw/aa bb/], 'Add complex document');
22
23
24my $kq = Krawfish::Koral::Query::Builder->new;
25
26my $query = $kq->token('bb');
27
28my $count = Krawfish::Result::Aggregate::Count->new;
29
30# Get count object
31ok(my $aggr = Krawfish::Result::Aggregate->new(
32 $query->prepare_for($index),
33 [$count]
34), 'Create count object');
35
36ok($aggr->next, 'Next');
37ok($aggr->next, 'Next');
38ok(!$aggr->next, 'No more nexts');
39
40
41is($count->doc_freq, 2, 'Document frequency');
42is($count->freq, 2, 'Occurrence frequency');
43
44
45is($aggr->to_string, "aggregate([count]:'bb')", 'Get counts');
46$query = $kq->token('cc');
47
48$count = Krawfish::Result::Aggregate::Count->new;
49
50# Get count object
51ok($aggr = Krawfish::Result::Aggregate->new(
52 $query->prepare_for($index),
53 [$count]
54), 'Create count object');
55
56ok($aggr->finish, 'Finish');
57is($aggr->to_string, "aggregate([count]:'cc')", 'Get counts');
58is($count->doc_freq, 1, 'Document frequency');
59is($count->freq, 2, 'Occurrence frequency');
60
61done_testing;
62__END__
63my $index = Krawfish::Index->new;
64
65ok(defined $index->add('t/data/doc1.jsonld'), 'Add new document');
66ok(defined $index->add('t/data/doc2.jsonld'), 'Add new document');
67ok(defined $index->add('t/data/doc3-segments.jsonld'), 'Add new document');
68
69my $kq = Krawfish::Koral::Query::Builder->new;
70my $query = $kq->token('Der');
71
72my $facet_license = Krawfish::Result::Aggregate::Facets->new(
73 $index,
74 'license'
75);
76
77my $facet_corpus = Krawfish::Result::Aggregate::Facets->new(
78 $index,
79 'corpus'
80);
81
82# Get facets object
83ok(my $aggr = Krawfish::Result::Aggregate->new(
84 $query->prepare_for($index),
85 [$facet_license, $facet_corpus]
86), 'Create count object');
87
88is(
89 $aggr->to_string,
90 "aggregate([facet:license,facet:corpus]:'Der')",
91 'Stringification'
92);
93
94ok($aggr->next, 'Next');
95ok($aggr->next, 'Next');
96ok(!$aggr->next, 'No more nexts');
97
98my $hash = $facet_license->facets;
99is($hash->{free}->[0], 1, 'Document frequency');
100is($hash->{free}->[1], 1, 'frequency');
101is($hash->{closed}->[0], 1, 'Document frequency');
102is($hash->{closed}->[1], 1, 'frequency');
103
104$hash = $facet_corpus->facets;
105is($hash->{'corpus-2'}->[0], 2, 'Document frequency');
106is($hash->{'corpus-2'}->[1], 2, 'frequency');
107
108is_deeply($aggr->result, {
109 facets => {
110 license => {
111 free => [1,1],
112 closed => [1,1]
113 },
114 corpus => {
115 'corpus-2' => [2,2]
116 }
117 }
118}, 'aggregated results');
119
120done_testing;
121__END__