Fix frequency aggregation
diff --git a/lib/Krawfish/Koral/Meta/Aggregate/Frequencies.pm b/lib/Krawfish/Koral/Meta/Aggregate/Frequencies.pm
index 6e7192f..29b1ec3 100644
--- a/lib/Krawfish/Koral/Meta/Aggregate/Frequencies.pm
+++ b/lib/Krawfish/Koral/Meta/Aggregate/Frequencies.pm
@@ -1,4 +1,5 @@
package Krawfish::Koral::Meta::Aggregate::Frequencies;
+use Krawfish::Result::Segment::Aggregate::Frequencies;
use strict;
use warnings;
@@ -8,20 +9,34 @@
bless \$self, $class;
};
+
sub type {
'freq'
};
-sub identify {
- $_[0];
-};
sub normalize {
$_[0];
};
+
+
+sub identify {
+ $_[0];
+};
+
+
sub to_string {
'freq';
};
+
+# Materialize query for segment search
+sub optimize {
+ my ($self, $segment) = @_;
+
+ return Krawfish::Result::Segment::Aggregate::Frequencies->new;
+};
+
+
1;
diff --git a/t/result/segment/aggregate_freq.t b/t/result/segment/aggregate_freq.t
index 9ef3d9c..be81431 100644
--- a/t/result/segment/aggregate_freq.t
+++ b/t/result/segment/aggregate_freq.t
@@ -39,7 +39,7 @@
# This is a query that is fine to be send to nodes
is($koral_query->to_string,
- "enrich(fields:['id']:sort(field='id'<:aggr(freq:filter(bb,[1]))))",
+ "aggr(freq:filter(bb,[1]))",
'Stringification');
# This is a query that is fine to be send to segments:
@@ -48,55 +48,42 @@
# This is a query that is fine to be send to nodes
is($koral_query->to_string,
- "enrich(fields:[#2]:sort(field=#2<:aggr(freq:filter(#4,[1]))))",
+ "aggr(freq:filter(#4,[1]))",
'Stringification');
-diag 'check frequencies! First priority';
+ok(my $query = $koral_query->optimize($index->segment), 'Optimization');
+
+is($query->to_string, 'aggregate([freq]:filter(#4,[1]))', 'Stringification');
+
+ok($query->next, 'Next');
+ok($query->next, 'Next');
+ok(!$query->next, 'No more nexts');
+
+is($query->collection->{totalResources}, 2, 'Document frequency');
+is($query->collection->{totalResults}, 2, 'Occurrence frequency');
+$koral = Krawfish::Koral->new;
+$koral->query($qb->token('cc'));
+$koral->meta(
+ $mb->aggregate(
+ $mb->a_frequencies
+ )
+);
-
-
-done_testing;
-__END__
-
-# Create new frequency criterion
-my $freq = Krawfish::Result::Segment::Aggregate::Frequencies->new;
-is($freq->to_string, 'freq');
-
-# Get aggregation object with frequency criterion
-ok(my $aggr = Krawfish::Result::Segment::Aggregate->new(
- $query->normalize->finalize->identify($index->dict)->optimize($index->segment),
- [$freq]
-), 'Create freq object');
-
-ok($aggr->next, 'Next');
-ok($aggr->next, 'Next');
-ok(!$aggr->next, 'No more nexts');
-
-
-is($aggr->result->{totalResources}, 2, 'Document frequency');
-is($aggr->result->{totalResults}, 2, 'Occurrence frequency');
-
-is($aggr->to_string, "aggregate([freq]:#3)", 'Get freqs');
-$query = $kq->token('cc');
-
-$freq = Krawfish::Result::Segment::Aggregate::Frequencies->new;
-
-# Get freq object
-ok($aggr = Krawfish::Result::Segment::Aggregate->new(
- $query->normalize->finalize->identify($index->dict)->optimize($index->segment),
- [$freq]
-), 'Create freq object');
+ok($query = $koral->to_query->identify($index->dict)->optimize($index->segment),
+ 'Optimization');
# Search till the end
-ok($aggr->finalize, 'Finish');
+ok($query->finalize, 'Finish');
# Stringify
-is($aggr->to_string, "aggregate([freq]:#5)", 'Get freqs');
+is($query->to_string, "aggregate([freq]:filter(#6,[1]))", 'Get freqs');
-is($aggr->result->{totalResources}, 1, 'Document frequency');
-is($aggr->result->{totalResults}, 2, 'Occurrence frequency');
+is($query->collection->{totalResources}, 1, 'Document frequency');
+is($query->collection->{totalResults}, 2, 'Occurrence frequency');
+
+
done_testing;
__END__
diff --git a/t/result/segment/aggregate_length.t b/t/result/segment/aggregate_length.t
index d92f881..827d714 100644
--- a/t/result/segment/aggregate_length.t
+++ b/t/result/segment/aggregate_length.t
@@ -60,8 +60,6 @@
ok($query->next, 'Next');
ok(!$query->next, 'No more nexts');
-diag 'check lengths!';
-
is_deeply($query->collection, {
length => {
avg => 1.75,