blob: cc641445fa7c95712852731a5a7585aa0607015f [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
package LucyX::Build::Binding::Search;
use strict;
use warnings;
our $VERSION = '0.004001';
$VERSION = eval $VERSION;
sub bind_all {
my $class = shift;
$class->bind_filter;
$class->bind_mockmatcher;
$class->bind_proximityquery;
$class->bind_proximitycompiler;
}
sub bind_filter {
my $binding = Clownfish::CFC::Binding::Perl::Class->new(
parcel => "Lucy",
class_name => "LucyX::Search::FilterMatcher",
);
$binding->bind_constructor;
Clownfish::CFC::Binding::Perl::Class->register($binding);
}
sub bind_mockmatcher {
my $binding = Clownfish::CFC::Binding::Perl::Class->new(
parcel => "Lucy",
class_name => "LucyX::Search::MockMatcher",
);
$binding->bind_constructor( alias => '_new' );
Clownfish::CFC::Binding::Perl::Class->register($binding);
}
sub bind_proximityquery {
my @exposed = qw( Get_Field Get_Terms Get_Within );
my $pod_spec = Clownfish::CFC::Binding::Perl::Pod->new;
my $synopsis = <<'END_SYNOPSIS';
my $proximity_query = LucyX::Search::ProximityQuery->new(
field => 'content',
terms => [qw( the who )],
within => 10, # match within 10 positions
);
my $hits = $searcher->hits( query => $proximity_query );
END_SYNOPSIS
$pod_spec->set_synopsis($synopsis);
$pod_spec->add_constructor( alias => 'new' );
$pod_spec->add_method( method => $_, alias => lc($_) ) for @exposed;
my $binding = Clownfish::CFC::Binding::Perl::Class->new(
parcel => "Lucy",
class_name => "LucyX::Search::ProximityQuery",
);
$binding->bind_constructor;
$binding->set_pod_spec($pod_spec);
Clownfish::CFC::Binding::Perl::Class->register($binding);
}
sub bind_proximitycompiler {
my $binding = Clownfish::CFC::Binding::Perl::Class->new(
parcel => "Lucy",
class_name => "LucyX::Search::ProximityCompiler",
);
$binding->bind_constructor( alias => 'do_new' );
Clownfish::CFC::Binding::Perl::Class->register($binding);
}
1;