Add sort by knob for freebsd mailinglists search. Values are author, date,
subject and score. Score is the default sort option.
This commit is contained in:
parent
98aa89eea4
commit
243e91422b
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/www/; revision=2148
4 changed files with 142 additions and 10 deletions
|
|
@ -106,6 +106,7 @@ sub do_wais {
|
||||||
&open2(WAISOUT, WAISIN, $waisq, "-g");
|
&open2(WAISOUT, WAISIN, $waisq, "-g");
|
||||||
print WAISIN $w_question;
|
print WAISIN $w_question;
|
||||||
|
|
||||||
|
local(@mylist) = ();
|
||||||
local($hits, $score, $headline, $lines, $bytes, $type, $date, $file);
|
local($hits, $score, $headline, $lines, $bytes, $type, $date, $file);
|
||||||
while (<WAISOUT>) {
|
while (<WAISOUT>) {
|
||||||
/:score\s+(\d+)/ && ($score = $1);
|
/:score\s+(\d+)/ && ($score = $1);
|
||||||
|
|
@ -113,9 +114,64 @@ sub do_wais {
|
||||||
/:number-of-lines\s+(\d+)/ && ($lines = $1);
|
/:number-of-lines\s+(\d+)/ && ($lines = $1);
|
||||||
/:number-of-bytes\s+(\d+)/ && ($bytes = $1);
|
/:number-of-bytes\s+(\d+)/ && ($bytes = $1);
|
||||||
/:type "(.*)"/ && ($type = $1);
|
/:type "(.*)"/ && ($type = $1);
|
||||||
/:headline "(.*)"/ && ($headline = $1); # XXX
|
/:headline "(.*)"/ && ($headline = $1,
|
||||||
/:date "(\d+)"/ && ($date = $1, $hits++, &docdone);
|
$headline =~ s/Re:\sRe:\s/Re: /); # XXX
|
||||||
|
/:date "(\d+)"/ && ($date = $1, $hits++,
|
||||||
|
push(@mylist, join("\t", $date, $headline, $type,
|
||||||
|
$bytes, $lines, $file, $score, $hits)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($in{'sort'} eq "date") {
|
||||||
|
foreach (reverse sort {$a <=> $b} @mylist) {
|
||||||
|
($date, $headline, $type, $bytes, $lines,
|
||||||
|
$file, $score, $hits) = split("\t");
|
||||||
|
&docdone;
|
||||||
|
}
|
||||||
|
} elsif ($in{'sort'} eq "subject") {
|
||||||
|
local(@a, @c, $b, $d);
|
||||||
|
foreach (@mylist) {
|
||||||
|
@a = split("\t");
|
||||||
|
$b = $a[0];
|
||||||
|
# swap date and subject
|
||||||
|
if ($a[1] =~ /(^[^:]+)(Re:.*)/) {
|
||||||
|
$a[0] = "$2\t$1";
|
||||||
|
} else {
|
||||||
|
$a[0] = "$a[1]\t.";
|
||||||
|
}
|
||||||
|
$a[1] = $b;
|
||||||
|
push(@c, join("\t", @a));
|
||||||
|
}
|
||||||
|
local($subject, $author);
|
||||||
|
foreach (sort {$a cmp $b} @c) {
|
||||||
|
($subject, $author, $date, $type, $bytes,
|
||||||
|
$lines, $file, $score, $hits) = split("\t");
|
||||||
|
$headline = $author . $subject;
|
||||||
|
&docdone;
|
||||||
|
}
|
||||||
|
|
||||||
|
} elsif ($in{'sort'} eq "author") {
|
||||||
|
local(@a, @c, $b);
|
||||||
|
foreach (@mylist) {
|
||||||
|
@a = split("\t");
|
||||||
|
# swap date and subject
|
||||||
|
$b = $a[0]; $a[0] = $a[1]; $a[1] = $b;
|
||||||
|
push(@c, join("\t", @a));
|
||||||
|
}
|
||||||
|
foreach (sort {$a cmp $b} @c) {
|
||||||
|
($headline, $date, $type, $bytes,
|
||||||
|
$lines, $file, $score, $hits) = split("\t");
|
||||||
|
&docdone;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
foreach (@mylist) {
|
||||||
|
($date, $headline, $type, $bytes,
|
||||||
|
$lines, $file, $score, $hits) = split("\t");
|
||||||
|
&docdone;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#print qq[in: $in{'sort'}\n];
|
||||||
|
|
||||||
print "</OL>\n";
|
print "</OL>\n";
|
||||||
|
|
||||||
print "<p>Didn't get what you expected? ";
|
print "<p>Didn't get what you expected? ";
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN" [
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN" [
|
||||||
<!ENTITY date "$Date: 1997-10-22 21:44:26 $">
|
<!ENTITY date "$Date: 1997-11-08 18:22:06 $">
|
||||||
<!ENTITY title "Search">
|
<!ENTITY title "Search">
|
||||||
<!ENTITY % includes SYSTEM "includes.sgml"> %includes;
|
<!ENTITY % includes SYSTEM "includes.sgml"> %includes;
|
||||||
]>
|
]>
|
||||||
<!-- $Id: search.sgml,v 1.19 1997-10-22 21:44:26 jfieber Exp $ -->
|
<!-- $Id: search.sgml,v 1.20 1997-11-08 18:22:06 wosch Exp $ -->
|
||||||
|
|
||||||
<html>
|
<html>
|
||||||
&header;
|
&header;
|
||||||
|
|
@ -62,7 +62,17 @@ for more information.</a></p>
|
||||||
|
|
||||||
<p><input type="text" name="words" size="50"><br>
|
<p><input type="text" name="words" size="50"><br>
|
||||||
Limit the number of results to <input type="text" name="max"
|
Limit the number of results to <input type="text" name="max"
|
||||||
value="25" size="5"> <input type="submit"> <input type="reset"></p>
|
value="25" size="5">
|
||||||
|
|
||||||
|
sort by
|
||||||
|
<SELECT NAME="sort">
|
||||||
|
<OPTION VALUE="score">score</OPTION>
|
||||||
|
<OPTION VALUE="date">date</OPTION>
|
||||||
|
<OPTION VALUE="subject">subject</OPTION>
|
||||||
|
<OPTION VALUE="author">author</OPTION>
|
||||||
|
</SELECT>
|
||||||
|
|
||||||
|
<input type="submit"> <input type="reset"></p>
|
||||||
|
|
||||||
<h3>In archive(s):</h3>
|
<h3>In archive(s):</h3>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,7 @@ sub do_wais {
|
||||||
&open2(WAISOUT, WAISIN, $waisq, "-g");
|
&open2(WAISOUT, WAISIN, $waisq, "-g");
|
||||||
print WAISIN $w_question;
|
print WAISIN $w_question;
|
||||||
|
|
||||||
|
local(@mylist) = ();
|
||||||
local($hits, $score, $headline, $lines, $bytes, $type, $date, $file);
|
local($hits, $score, $headline, $lines, $bytes, $type, $date, $file);
|
||||||
while (<WAISOUT>) {
|
while (<WAISOUT>) {
|
||||||
/:score\s+(\d+)/ && ($score = $1);
|
/:score\s+(\d+)/ && ($score = $1);
|
||||||
|
|
@ -113,9 +114,64 @@ sub do_wais {
|
||||||
/:number-of-lines\s+(\d+)/ && ($lines = $1);
|
/:number-of-lines\s+(\d+)/ && ($lines = $1);
|
||||||
/:number-of-bytes\s+(\d+)/ && ($bytes = $1);
|
/:number-of-bytes\s+(\d+)/ && ($bytes = $1);
|
||||||
/:type "(.*)"/ && ($type = $1);
|
/:type "(.*)"/ && ($type = $1);
|
||||||
/:headline "(.*)"/ && ($headline = $1); # XXX
|
/:headline "(.*)"/ && ($headline = $1,
|
||||||
/:date "(\d+)"/ && ($date = $1, $hits++, &docdone);
|
$headline =~ s/Re:\sRe:\s/Re: /); # XXX
|
||||||
|
/:date "(\d+)"/ && ($date = $1, $hits++,
|
||||||
|
push(@mylist, join("\t", $date, $headline, $type,
|
||||||
|
$bytes, $lines, $file, $score, $hits)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($in{'sort'} eq "date") {
|
||||||
|
foreach (reverse sort {$a <=> $b} @mylist) {
|
||||||
|
($date, $headline, $type, $bytes, $lines,
|
||||||
|
$file, $score, $hits) = split("\t");
|
||||||
|
&docdone;
|
||||||
|
}
|
||||||
|
} elsif ($in{'sort'} eq "subject") {
|
||||||
|
local(@a, @c, $b, $d);
|
||||||
|
foreach (@mylist) {
|
||||||
|
@a = split("\t");
|
||||||
|
$b = $a[0];
|
||||||
|
# swap date and subject
|
||||||
|
if ($a[1] =~ /(^[^:]+)(Re:.*)/) {
|
||||||
|
$a[0] = "$2\t$1";
|
||||||
|
} else {
|
||||||
|
$a[0] = "$a[1]\t.";
|
||||||
|
}
|
||||||
|
$a[1] = $b;
|
||||||
|
push(@c, join("\t", @a));
|
||||||
|
}
|
||||||
|
local($subject, $author);
|
||||||
|
foreach (sort {$a cmp $b} @c) {
|
||||||
|
($subject, $author, $date, $type, $bytes,
|
||||||
|
$lines, $file, $score, $hits) = split("\t");
|
||||||
|
$headline = $author . $subject;
|
||||||
|
&docdone;
|
||||||
|
}
|
||||||
|
|
||||||
|
} elsif ($in{'sort'} eq "author") {
|
||||||
|
local(@a, @c, $b);
|
||||||
|
foreach (@mylist) {
|
||||||
|
@a = split("\t");
|
||||||
|
# swap date and subject
|
||||||
|
$b = $a[0]; $a[0] = $a[1]; $a[1] = $b;
|
||||||
|
push(@c, join("\t", @a));
|
||||||
|
}
|
||||||
|
foreach (sort {$a cmp $b} @c) {
|
||||||
|
($headline, $date, $type, $bytes,
|
||||||
|
$lines, $file, $score, $hits) = split("\t");
|
||||||
|
&docdone;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
foreach (@mylist) {
|
||||||
|
($date, $headline, $type, $bytes,
|
||||||
|
$lines, $file, $score, $hits) = split("\t");
|
||||||
|
&docdone;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#print qq[in: $in{'sort'}\n];
|
||||||
|
|
||||||
print "</OL>\n";
|
print "</OL>\n";
|
||||||
|
|
||||||
print "<p>Didn't get what you expected? ";
|
print "<p>Didn't get what you expected? ";
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN" [
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN" [
|
||||||
<!ENTITY date "$Date: 1997-10-22 21:44:26 $">
|
<!ENTITY date "$Date: 1997-11-08 18:22:06 $">
|
||||||
<!ENTITY title "Search">
|
<!ENTITY title "Search">
|
||||||
<!ENTITY % includes SYSTEM "includes.sgml"> %includes;
|
<!ENTITY % includes SYSTEM "includes.sgml"> %includes;
|
||||||
]>
|
]>
|
||||||
<!-- $Id: search.sgml,v 1.19 1997-10-22 21:44:26 jfieber Exp $ -->
|
<!-- $Id: search.sgml,v 1.20 1997-11-08 18:22:06 wosch Exp $ -->
|
||||||
|
|
||||||
<html>
|
<html>
|
||||||
&header;
|
&header;
|
||||||
|
|
@ -62,7 +62,17 @@ for more information.</a></p>
|
||||||
|
|
||||||
<p><input type="text" name="words" size="50"><br>
|
<p><input type="text" name="words" size="50"><br>
|
||||||
Limit the number of results to <input type="text" name="max"
|
Limit the number of results to <input type="text" name="max"
|
||||||
value="25" size="5"> <input type="submit"> <input type="reset"></p>
|
value="25" size="5">
|
||||||
|
|
||||||
|
sort by
|
||||||
|
<SELECT NAME="sort">
|
||||||
|
<OPTION VALUE="score">score</OPTION>
|
||||||
|
<OPTION VALUE="date">date</OPTION>
|
||||||
|
<OPTION VALUE="subject">subject</OPTION>
|
||||||
|
<OPTION VALUE="author">author</OPTION>
|
||||||
|
</SELECT>
|
||||||
|
|
||||||
|
<input type="submit"> <input type="reset"></p>
|
||||||
|
|
||||||
<h3>In archive(s):</h3>
|
<h3>In archive(s):</h3>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue