CWB-Web
view release on metacpan or search on metacpan
lib/CWB/Web/Search.pm view on Meta::CPAN
$variance = 4 if $variance < 4; # scale proximity score to 0 .. $proximity_points range
my $sd = sqrt($variance/4);
my $cnt_preferred = 0; # a match gets higher score, if one or more of its keywords fall into preferred environments
foreach my $keyword (keys %{$match->{'keyword'}}) {
$cnt_preferred++
if grep { defined $_->cpos2struc($keyword) } @preferred;
}
my $quality =
(($match->{'n'} - 1) + ($proximity_points / $sd) + ($preferred_points * $cnt_preferred / $no_of_keywords))
/ $total_points;
$match->{'quality'} = int ($quality*100 + 0.5); # rounded percentage
}
}
# sort matchlist by one the fields
# 'first' ... sort by first position in match
# 'quality' ... sort by quality values (make sure you've called compute_quality() beforehand!)
sub sort {
my $self = shift;
my $method = shift;
my %sort = (
lib/CWB/Web/Search.pm view on Meta::CPAN
=over 4
=item $m->{'cpos'}
I<Corpus position> of the I<centre> of this match (the I<centre> is
computed from the positions of all search I<keywords> in a match).
=item $m->{'quality'}
An estimate of the I<relevance> of this match. This ranking is given as a
percentage with 100% corresponding to a "perfect match". The matches found
by the I<query()> method are sorted according to their 'quality' value.
=item $m->{'summary'}
A text segment from the corpus containing most of the <keywords> found
in this match (up to a reasonable maxium length). It is returned in
HTML format with the I<keywords> highlighted.
=item $m->{'context'}
( run in 0.329 second using v1.01-cache-2.11-cpan-624ce96ca49 )