optional case-insensitivity for searching
[bse.git] / site / cgi-bin / modules / BSE / Index.pm
index e27b0ab..fccc28e 100644 (file)
@@ -4,7 +4,7 @@ use Time::HiRes qw(time);
 use Constants qw(@SEARCH_EXCLUDE @SEARCH_INCLUDE);
 use BSE::TB::Articles;
 
-our $VERSION = "1.005";
+our $VERSION = "1.007";
 
 my %default_scores =
   (
@@ -46,12 +46,16 @@ sub indexer {
     my $indexer_class = $cfg->entry('search', 'indexer', 'BSE::Index::BSE');
     (my $indexer_file = $indexer_class . ".pm") =~ s!::!/!g;
     require $indexer_file;
+    my $case_sensitivity = $cfg->entry('search', 'case_sensitive', 'context');
+    $case_sensitivity =~ /^(none|context|controlled)$/
+      or die "[search].case_sensitive must be none, context or controlled\n";
 
     $self->{indexer} = $indexer_class->new
       (
        cfg => $cfg,
        scores => $self->{scores},
        verbose => $self->{verbose},
+       case => $case_sensitivity,
       );
   }
 
@@ -101,7 +105,7 @@ sub make_index {
     next unless $article->should_index;
     my $section = $article->section;
     my $id = $article->{id};
-    my $indexas = $article->{level} > $self->{max_level} ? $article->{parentid} : $id;
+    my $indexas = $article->indexed_as;
     my $sectionid = $section->{id};
     eval "use $article->{generator}";
     $@ and die $@;
@@ -146,7 +150,7 @@ sub make_index {
 
       $fields{$field} = $text;
     }
-    $indexer->process_article($article, $section, $indexas, \%fields);
+    $indexer->process_article($article, $section, $indexas->id, \%fields);
   }
   $self->vnote("f::Article scan complete");
 }