[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