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]