#!/usr/bin/perl
#- Configurable Variables ---------------------------------------------------#
$swish = "/usr/local/bin/swish-e";
$swishcgi = "/home/board/public_html/unixboard/search.cgi";
$index = "/home/board/public_html/unixboard/search/index";
$config = "/home/board/public_html/unixboard/search/search.conf";
#- Main Program -------------------------------------------------------------#
&parse_form_data (*FORM);
#if ($FORM{'keyword'} =~ /\w+/) {
# push (@query, $FORM{'keyword'});
# }
$FORM{'keyword'} =~ s/\;//g;
$FORM{'keyword'} =~ s/\[//g;
$FORM{'keyword'} =~ s/\]//g;
$FORM{'keyword'} =~ s/\>//g;
$FORM{'keyword'} =~ s/\/g;
$FORM{'keyword'} =~ s/\.//g;
$FORM{'keyword'} =~ s/\&//g;
$FORM{'keyword'} =~ s/\"//g;
$FORM{'keyword'} =~ s/\-//g;
$FORM{'keyword'} =~ s/\=//g;
$FORM{'keyword'} =~ s/\{//g;
$FORM{'keyword'} =~ s/\}//g;
$FORM{'keyword'} =~ s/\+//g;
$FORM{'keyword'} =~ s/\\//g;
$FORM{'keyword'} =~ s/\///g;
$FORM{'keyword'} =~ s/\(//g;
$FORM{'keyword'} =~ s/\*//g;
$FORM{'keyword'} =~ s/\)//g;
$FORM{'keyword'} =~ s/\$//g;
$FORM{'keyword'} =~ s/\~//g;
push (@query,$FORM{'keyword'});
$query = join (" and ", @query);
$results = $FORM{'results'};
if ($query) {
&search_parse;
}else{
&search_error("您要搜索什么?");
}
#- Subroutines ---------------------------------------------------------------#
#Subroutine for checking and parsing the incoming form data.
sub parse_form_data {
local (*FORM_DATA) = @_;
local ($request_method, $query_string, @key_value_pairs, $key_value, $key, $value);
$request_method = $ENV{'REQUEST_METHOD'};
if ($request_method eq "GET") {
$query_string = $ENV{'QUERY_STRING'};
} elsif ($request_method eq "POST") {
read (STDIN, $query_string, $ENV{'CONTENT_LENGTH'});
} else {
&search_error ("Forms must use either GET or POST.");
}
@key_value_pairs = split (/&/, $query_string);
foreach $key_value (@key_value_pairs) {
($key, $value) = split (/=/, $key_value);
$value =~ tr/+/ /;
$value =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack ("C", hex ($1))/eg;
if (defined ($FORM_DATA{$key})) {
$FORM_DATA{$key} = join ("\0", $FORM_DATA{$key}, $value);
} else {
$FORM_DATA{$key} = $value;
}
}
}
#Subroutine for constructing the Swish-E search request and formating the results.
sub search_parse {
#$query =~ s/[^a-zA-Z0-9\-\_\*\.\@\(\)\=\" ]/ /g;
$count=0;
open(SWISH, "$swish -w \"$query\" -m 5000 -f $index|");
while (