optional case-insensitivity for searching
[bse.git] / site / cgi-bin / modules / BSE / Search / BSE.pm
index 64b5a7e..d759742 100644 (file)
@@ -2,6 +2,8 @@ package BSE::Search::BSE;
 use strict;
 use Constants qw(:search);
 
+our $VERSION = "1.001";
+
 use base 'BSE::Search::Base';
 
 sub new {
@@ -51,11 +53,13 @@ sub get_term_matches {
 }
 
 sub search {
-  my ($self, $words, $section, $date, $terms, $match_all, $req) = @_;
+  my ($self, $words, $section, $date, $terms, $match_all, $req, $match_case) = @_;
 
   # canonical form
   $words =~ s/^\s+|\s+$//g;
 
+  $words = lc $words unless $match_case;
+
   # array of [ term, unquoted, required, weight ]
   my @terms;
   my @exclude;
@@ -150,12 +154,12 @@ sub search {
   SWITCH: for ($date) {
     $_ eq 'ar' # been released
       && do {
-       $sql .= " and $now between release and expire";
+       $sql .= " and $now between \"release\" and expire";
        last SWITCH;
       };
     /^r(\d+)$/ # released in last N days
       && do {
-       $sql .= " and release > "._sql_date(time - $oneday * $1);
+       $sql .= " and \"release\" > "._sql_date(time - $oneday * $1);
        last SWITCH;
       };
     /^e(\d+)$/ # expired in last N days