Date:   Monday February 3, 2003 @ 8:51
Author: matt

Update of /home/cvs/AxKit-XSP-Wiki/lib/AxKit/XSP
In directory ted.sergeant.org:/tmp/cvs-serv9413/lib/AxKit/XSP

Modified Files:
        Wiki.pm 
Log Message:
More search fixes
Log:
Submitted by:   
Reviewed by:    
PR:


Index: Wiki.pm
===================================================================
RCS file: /home/cvs/AxKit-XSP-Wiki/lib/AxKit/XSP/Wiki.pm,v
retrieving revision 1.16
retrieving revision 1.17
diff -b -u -r1.16 -r1.17
--- Wiki.pm     2003/02/03 08:34:34     1.16
+++ Wiki.pm     2003/02/03 08:51:01     1.17
@@ -242,8 +242,9 @@
     my $clause = '';
 
     my $word_from_id = 1;
+    my $andor = 'AND';
 
-    if ( $p{required} ) {
+    if ( @{$p{required}} ) {
         foreach my $word ( @{ $p{required} } ) {
             push @fromlist, "Word AS word$word_from_id";
             $clause .= "AND ContentIndex.word_id = word$word_from_id\.id\n";
@@ -252,20 +253,17 @@
         }
     }
     
-    if ($p{normal}) {
-        foreach my $word ( @{ $p{normal} } ) {
-            push @fromlist, "ContentIndex AS ContentIndex$word_from_id LEFT OUTER 
JOIN Word AS word$word_from_id ON ContentIndex$word_from_id.word_id = 
word$word_from_id.id";
-            $clause .= "AND word$word_from_id\.word = " . $db->quote($word) . "\n";
+    if (@{$p{normal}}) {
+        push @fromlist, "Word AS word$word_from_id";
+        $clause .= "AND ContentIndex.word_id = word$word_from_id.id\n";
+        $clause .= "AND word$word_from_id.word in (" . join(',', map { $db->quote($_) 
+} @{$p{normal}}) . ")\n";
             $word_from_id++;
         }
-    }
     
-    if ($p{phrase}) {
-        # Can this work with Postgres?  I don't think so.
-        foreach my $phrase ( @{ $p{phrase} } ) {
-            $clause .= "AND Page.content LIKE " . $db->quote("\%" . $phrase . "\%");
-            $clause .= "\n";
-        }
+    if (@{$p{phrase}}) {
+        $clause .= "AND (";
+        $clause .= join(" OR ", map { "AND Page.content LIKE " . $db->quote("%$_%") } 
+@{$p{phrase}});
+        $clause .= ")\n";
     }
     
     if (@fromlist) {

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to