blob: 74e099997e46660f9a96d48c8d1a511cb508ef2f [file] [log] [blame]
package Krawfish::Koral;
use strict;
use warnings;
use Krawfish::Info;
use Krawfish::Koral::Query;
use Krawfish::Koral::Query::Builder;
use Krawfish::Koral::Corpus;
use Krawfish::Koral::Corpus::Builder;
use Krawfish::Koral::Meta;
use Krawfish::Koral::Document;
# TODO:
# Krawfish::Koral::Query
# Krawfish::Koral::Corpus
# Krawfish::Koral::Meta
use constant CONTEXT => 'http://korap.ids-mannheim.de/ns/koral/0.6/context.jsonld';
sub new {
my $class = shift;
my $self = bless {
query => undef,
corpus => undef,
meta => undef,
document => undef
}, $class;
return $self unless @_;
# Expect a hash
my $koral = shift;
# Import document
if ($koral->{document}) {
$self->{document} = Krawfish::Koral::Document->new($koral->{document});
};
return $self;
};
sub query {
my $self = shift;
$self->{query} = shift if $_[0];
return $self->{query};
};
sub query_builder {
Krawfish::Koral::Query::Builder->new;
};
sub corpus {
my $self = shift;
$self->{corpus} = shift if $_[0];
return $self->{corpus};
};
sub corpus_builder {
Krawfish::Koral::Corpus::Builder->new;
};
sub meta { ... };
# sub response { ... };
sub from_koral_query {
};
# Serialization of KoralQuery
sub to_koral_query {
my $self = shift;
my $koral = {
'@context' => CONTEXT
};
if ($self->query) {
$koral->{'query'} = $self->query->to_koral_fragment
};
if ($self->corpus) {
$koral->{'corpus'} = $self->corpus->to_koral_fragment
};
return $koral;
};
1;
__END__
sub search {
my $self = shift;
my $callback = shift;
my $token = Krawfish::Query::Token->new(
$self->{index},
$term
);
# Filter the results
if ($self->filter_by) {
# Filter the result
$token->filter_by($self->filter_by);
};
# Apply Sorting here
# Iterate over all matches
while ($self->next) {
# Call callback with match
$callback->($self->current) or return;
};
};