/[swish]/trunk/html/swish.cgi
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/html/swish.cgi

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 88 by dpavlin, Tue Aug 31 07:47:05 2004 UTC revision 89 by dpavlin, Tue Aug 31 09:04:15 2004 UTC
# Line 8  use XML::Simple; Line 8  use XML::Simple;
8  use Lingua::Spelling::Alternative;  use Lingua::Spelling::Alternative;
9  use Text::Iconv;  use Text::Iconv;
10  use Data::Pageset;  use Data::Pageset;
11    use FormatResult;
 sub get_snippet {  
   
         # maximum length of context in characters  
         my $cc = 50;  
   
         my $desc = shift || return '';  
         $desc = e($desc);  
   
         # sort words from longer to shorter (for hilighting later)  
         my @words = sort { length($b) <=> length($a) } @_;  
   
         # colors to highlite  
         my @colors = qw{#ffff66 #a0ffff #99ff99 #ff9999 #ff66ff};  
   
         # construct regex  
         my $re = qq/^(.*?\\b)(/ . join('|', @words) . qq/)/;  
   
         my $ellip = ' ... ';  
         my $snippet = '';  
   
 #print "<ul>";  
   
         while ($desc =~ s/$re//si) {  
                 my ($foo, $match) = ($1,$2);  
   
 #print "<br>desc: <small>$desc</small>\n";  
 #print "<br>foo: <small>$foo<b>$match</b></small>\n";  
   
                 if (length($foo) < $cc * 2) {  
                         $snippet .= $foo . $match;  
                 } else {  
   
                         if ($foo =~ m/^(.{0,$cc})(\s.*?\s|\s|)?(.{0,$cc})$/) {  
   
 #       print "<li><small>$snippet</small><br>  
 #       ",length($1),": <i>$1</i><br>  
 #       ",length($2),": <span style=\"color:grey\">$2</span><br>  
 #       ",length($3),": <i>$3</i><br>  
 #       <b>$match</b>\n";  
   
                                 if ($snippet) {  
                                         $snippet .= $1 . $ellip . $3 . $match;  
                                 } else {  
                                         $snippet = $ellip . $3 . $match ;  
                                 }  
   
                         } else {  
 #                               print "<li> <big>SKIP</big> $foo\n";  
                                 print STDERR "this shouldn't happen!\n";  
                         }  
   
                 }  
   
         }  
 #print "</ul>";  
   
         # color offset  
         my $i = 0;  
   
         foreach my $w (@words) {  
                 $snippet =~ s,(\b\Q$w\E),<span style="background: $colors[$i]; color:black;">$1</span>,gsi;  
                 $i++;  
                 $i = 0 if ($i > $#colors);  
         }  
   
         $snippet .= $ellip if ($snippet);  
   
         return $snippet;  
 }  
12    
13  # for pager  # for pager
14  my $pages_per_set = 20;  my $pages_per_set = 20;
# Line 295  if (param('search')) { Line 226  if (param('search')) {
226    
227                  foreach my $prop (@properties) {                  foreach my $prop (@properties) {
228                          if ($prop =~ m/swishdescription/) {                          if ($prop =~ m/swishdescription/) {
229                                  my $tmp = get_snippet(                                  my $tmp = FormatResult::get_snippet(
230                                          $result->Property($prop),                                          e($result->Property($prop)),
231                                          @s_highlite,                                          @s_highlite,
232                                  );                                  );
233                                                                    

Legend:
Removed from v.88  
changed lines
  Added in v.89

  ViewVC Help
Powered by ViewVC 1.1.26