[mb-commits] r9723 - in mb_server/trunk: cgi-bin/MusicBrainz/Server cgi-bin/MusicBrainz/Server/Handlers/WS/1 htdocs htdocs/search t
root at musicbrainz.org
root at musicbrainz.org
Sun Mar 9 08:10:23 UTC 2008
Author: luks
Date: 2008-03-09 08:10:23 +0000 (Sun, 09 Mar 2008)
New Revision: 9723
Added:
mb_server/trunk/t/taglookup_lucene_query.t
Modified:
mb_server/trunk/cgi-bin/MusicBrainz/Server/Handlers/WS/1/Common.pm
mb_server/trunk/cgi-bin/MusicBrainz/Server/Validation.pm
mb_server/trunk/htdocs/search/textsearch.html
mb_server/trunk/htdocs/taglookup.html
Log:
Fix tag lookups with specified track number (Closes #3594)
The problem was that MusicBrainz::Server::Validation::normalize was called also on the track number, which resulted in queries like "... tnum: ".
Modified: mb_server/trunk/cgi-bin/MusicBrainz/Server/Handlers/WS/1/Common.pm
===================================================================
--- mb_server/trunk/cgi-bin/MusicBrainz/Server/Handlers/WS/1/Common.pm 2008-03-09 08:00:08 UTC (rev 9722)
+++ mb_server/trunk/cgi-bin/MusicBrainz/Server/Handlers/WS/1/Common.pm 2008-03-09 08:10:23 UTC (rev 9723)
@@ -51,6 +51,7 @@
use Encode qw( decode encode );
use Album;
use MusicBrainz::Server::Country;
+use MusicBrainz::Server::LuceneSearch;
use constant INC_ARTIST => 0x000001;
use constant INC_COUNTS => 0x000002;
@@ -907,7 +908,7 @@
}
elsif ($type eq 'artist')
{
- my $term = MusicBrainz::Server::Validation::EscapeLuceneQuery($args->{artist});
+ my $term = MusicBrainz::Server::LuceneSearch::EscapeQuery($args->{artist});
$term =~ tr/A-Z/a-z/;
$term =~ s/\s*(.*?)\s*$/$1/;
if (not $term =~ /^\s*$/)
@@ -917,7 +918,7 @@
}
elsif ($type eq 'label')
{
- my $term = MusicBrainz::Server::Validation::EscapeLuceneQuery($args->{label});
+ my $term = MusicBrainz::Server::LuceneSearch::EscapeQuery($args->{label});
$term =~ tr/A-Z/a-z/;
$term =~ s/\s*(.*?)\s*$/$1/;
if (not $term =~ /^\s*$/)
@@ -928,7 +929,7 @@
elsif ($type eq 'release')
{
$query = "";
- my $term = MusicBrainz::Server::Validation::EscapeLuceneQuery($args->{release});
+ my $term = MusicBrainz::Server::LuceneSearch::EscapeQuery($args->{release});
$term =~ tr/A-Z/a-z/;
$term =~ s/\s*(.*?)\s*$/$1/;
if ($args->{release})
@@ -937,11 +938,11 @@
}
if ($args->{artistid})
{
- $query .= " AND arid:" . MusicBrainz::Server::Validation::EscapeLuceneQuery($args->{artistid});
+ $query .= " AND arid:" . MusicBrainz::Server::LuceneSearch::EscapeQuery($args->{artistid});
}
else
{
- my $term = MusicBrainz::Server::Validation::EscapeLuceneQuery($args->{artist});
+ my $term = MusicBrainz::Server::LuceneSearch::EscapeQuery($args->{artist});
$term =~ s/\s*(.*?)\s*$/$1/;
if (not $term =~ /^\s*$/)
{
@@ -984,7 +985,7 @@
elsif ($type eq 'track')
{
$query = "";
- my $term = MusicBrainz::Server::Validation::EscapeLuceneQuery($args->{track});
+ my $term = MusicBrainz::Server::LuceneSearch::EscapeQuery($args->{track});
$term =~ s/\s*(.*?)\s*$/$1/;
$term =~ tr/A-Z/a-z/;
if ($args->{track})
@@ -993,11 +994,11 @@
}
if ($args->{artistid})
{
- $query .= " AND arid:" . MusicBrainz::Server::Validation::EscapeLuceneQuery($args->{artistid});
+ $query .= " AND arid:" . MusicBrainz::Server::LuceneSearch::EscapeQuery($args->{artistid});
}
else
{
- my $term = MusicBrainz::Server::Validation::EscapeLuceneQuery($args->{artist});
+ my $term = MusicBrainz::Server::LuceneSearch::EscapeQuery($args->{artist});
$term =~ s/\s*(.*?)\s*$/$1/;
if (not $term =~ /^\s*$/)
{
@@ -1006,11 +1007,11 @@
}
if ($args->{releaseid})
{
- $query .= " AND reid:" . MusicBrainz::Server::Validation::EscapeLuceneQuery($args->{releaseid});
+ $query .= " AND reid:" . MusicBrainz::Server::LuceneSearch::EscapeQuery($args->{releaseid});
}
else
{
- my $term = MusicBrainz::Server::Validation::EscapeLuceneQuery($args->{release});
+ my $term = MusicBrainz::Server::LuceneSearch::EscapeQuery($args->{release});
$term =~ s/\s*(.*?)\s*$/$1/;
if (not $term =~ /^\s*$/)
{
Modified: mb_server/trunk/cgi-bin/MusicBrainz/Server/Validation.pm
===================================================================
--- mb_server/trunk/cgi-bin/MusicBrainz/Server/Validation.pm 2008-03-09 08:00:08 UTC (rev 9722)
+++ mb_server/trunk/cgi-bin/MusicBrainz/Server/Validation.pm 2008-03-09 08:10:23 UTC (rev 9723)
@@ -260,14 +260,6 @@
$t;
}
-# Escape special characters in a Lucene search query
-sub EscapeLuceneQuery
-{
- my $str = shift;
- $str =~ s/([+\-&|!(){}\[\]\^"~*?:\\])/\\$1/g;
- return $str;
-}
-
sub OrdinalNumberSuffix
{
my ($d, $n);
Modified: mb_server/trunk/htdocs/search/textsearch.html
===================================================================
--- mb_server/trunk/htdocs/search/textsearch.html 2008-03-09 08:00:08 UTC (rev 9722)
+++ mb_server/trunk/htdocs/search/textsearch.html 2008-03-09 08:10:23 UTC (rev 9723)
@@ -62,7 +62,7 @@
if (!exists $session{"as_adv"} or !$session{"as_adv"})
{
$query =~ tr/A-Z/a-z/;
- $query = MusicBrainz::Server::Validation::EscapeLuceneQuery($query);
+ $query = MusicBrainz::Server::LuceneSearch::EscapeQuery($query);
if ($session{"as_type"} eq 'artist')
{
$query = "artist:($query)(sortname:($query) alias:($query) !artist:($query))";
Modified: mb_server/trunk/htdocs/taglookup.html
===================================================================
--- mb_server/trunk/htdocs/taglookup.html 2008-03-09 08:00:08 UTC (rev 9722)
+++ mb_server/trunk/htdocs/taglookup.html 2008-03-09 08:10:23 UTC (rev 9723)
@@ -30,6 +30,7 @@
$release,
$track,
$tracknum,
+ $duration,
);
$m->comp("/comp/sidebar-notitle", pagetitle => "Lookup Results");
@@ -48,11 +49,7 @@
$tracknum = $data{tracknum} if (exists $data{tracknum} && !$tracknum);
}
- my $_artist = MusicBrainz::Server::Validation::normalize($artist);
- my $_release = MusicBrainz::Server::Validation::normalize($release);
- my $_track = MusicBrainz::Server::Validation::normalize($track);
my $_duration = 0;
-
if ($duration =~ /(\d+):(\d+)/)
{
$_duration = (($1 * 60) + $2) * 1000;
@@ -61,9 +58,7 @@
{
$_duration = $1;
}
- my $_tracknum = MusicBrainz::Server::Validation::normalize($tracknum);
-
# If a TRM is specified, and if it resolves to multiple tracks, show the
# matching tracks, and also a "search anyway" form.
my @coll_list;
@@ -238,33 +233,10 @@
<%perl>
}
- elsif ($_artist)
+ elsif ($artist)
{
- my ($query, $type);
- if ($track)
- {
- $type = "track";
- $query = $_track;
- $query .= " release:($_release)" if (not $_release =~ /^\s*$/);
- $query .= " artist:($_artist)" if (not $_artist =~ /^\s*$/);
- $query .= " tnum:$_tracknum" if $_tracknum;
- if ($_duration)
- {
- my $qdur = $_duration / 2000;
- $query .= " qdur:$qdur qdur:" . ($qdur - 1) . " qdur:" . ($qdur + 1) if ($qdur);
- }
- }
- elsif ($release)
- {
- $type = "release";
- $query = $_release;
- $query .= " artist:($_artist)" if (not $_artist =~ /^\s*$/);
- }
- else
- {
- $type = "artist";
- $query = "artist:($_artist) (sortname:($_artist))^0.000001 (alias:($_artist))^0.000001";
- }
+ use MusicBrainz::Server::LuceneSearch qw( TagLookupQuery );
+ my ($query, $type) = TagLookupQuery($artist, $release, $track, $tracknum, $_duration);
# print "Sorry, the search server is down.";
# return;
@@ -274,7 +246,6 @@
$docurl .= "&tport=$tport" if $tport;
$docurl .= "&dur=$_duration" if $_duration;
$docurl .= "&mbt=1" if $mbt;
- $docurl .= "&fields=artist" if $mbt;
require LWP::UserAgent;
my $ua = LWP::UserAgent->new;
Added: mb_server/trunk/t/taglookup_lucene_query.t
More information about the MusicBrainz-commits
mailing list