From 92235222dba4e5d0c7713d53ef12e0f10e371b83 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sun, 3 Jul 2016 11:12:42 +0200 Subject: Charedit/traits: Prioritize exact match when finding traits --- lib/VNDB/Handler/Traits.pm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'lib/VNDB/Handler') diff --git a/lib/VNDB/Handler/Traits.pm b/lib/VNDB/Handler/Traits.pm index adce5ef7..811815c3 100644 --- a/lib/VNDB/Handler/Traits.pm +++ b/lib/VNDB/Handler/Traits.pm @@ -409,14 +409,26 @@ sub traitxml { ); return $self->resNotFound if $f->{_err} || (!$f->{q} && !$f->{id} && !$f->{id}[0]); + # First try an exact match my($list, $np) = $self->dbTraitGet( - !$f->{q} ? () : $f->{q} =~ /^i([1-9]\d*)/ ? (id => $1) : (search => $f->{q}), + !$f->{q} ? () : $f->{q} =~ /^i([1-9]\d*)/ ? (id => $1) : (name => $f->{q}), $f->{id} && $f->{id}[0] ? (id => $f->{id}) : (), results => $f->{r}, page => 1, sort => 'group' ); + # Fill up the results with substring matches + if(!$np && $f->{q} && !($f->{id} && $f->{id}[0])) { + my($nlist, $nnp) = $self->dbTraitGet( + results => $f->{r}-@$list, page => 1, + search => $f->{q}, sort => 'group', + noid => [ map $_->{id}, @$list ] + ); + $np = $nnp; + $list = [ @$list, @$nlist ]; + } + $self->resHeader('Content-type' => 'text/xml; charset=UTF-8'); xml; tag 'traits', more => $np ? 'yes' : 'no'; -- cgit v1.2.3