/[tokyocabinet-toys]/tctsearch-pl.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

Annotation of /tctsearch-pl.cgi

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (hide annotations)
Tue Jul 21 12:32:05 2009 UTC (14 years, 8 months ago) by dpavlin
File size: 2301 byte(s)
import upstream source from http://alpha.mixi.co.jp/blog/?p=1205

1 dpavlin 1 #! /usr/bin/perl
2    
3     use strict;
4     use warnings;
5     use CGI;
6     use TokyoCabinet;
7    
8     use constant {
9     DBPATH => "/home/mikio/casket.tct",
10     };
11    
12     my $cgi = CGI->new();
13     my $scriptname = $cgi->script_name();
14     my $expr = $cgi->param("expr");
15     my @docs;
16     if(defined($expr) && length($expr) > 0){
17     my $tdb = TokyoCabinet::TDB->new();
18     $tdb->open(DBPATH);
19     my $tqry = TokyoCabinet::TDBQRY->new($tdb);
20     $tqry->addcond("title", $tqry->QCFTSEX, $expr);
21     $tqry->setorder("title", $tqry->QOSTRASC);
22     $tqry->setlimit(30, 0);
23     my $bqry = TokyoCabinet::TDBQRY->new($tdb);
24     $bqry->addcond("body", $bqry->QCFTSEX, $expr);
25     $bqry->setorder("title", $bqry->QOSTRASC);
26     $bqry->setlimit(30, 0);
27     my $res = $tqry->metasearch([ $bqry ], $tqry->MSUNION);
28     foreach my $pkey (@$res){
29     last if(@docs >= 30);
30     my $cols = $tdb->get($pkey);
31     if(defined($cols)){
32     my $kwic = $bqry->kwic($cols, undef, 20, $bqry->KWMUCTRL);
33     $cols->{kwic} = $kwic;
34     push(@docs, $cols);
35     }
36     }
37     $tdb->close();
38     }
39    
40     my $xexpr = defined($expr) ? $cgi->escapeHTML($expr) : "";
41     print($cgi->header(-charset => "UTF-8"));
42     print << "__EOS";
43     <html>
44     <head>
45     <title>Tiny Search by Perl</title>
46     <style type="text/css">
47     strong { text-decoration: underline; padding: 0px 2px; }
48     </style>
49     </head>
50     <body>
51     <h1>Tiny Search by Perl</h1>
52     <form method="get" action="$scriptname">
53     <div>
54     <input type="text" name="expr" value="$xexpr">
55     <input type="submit" value="search">
56     </div>
57     </form>
58     __EOS
59    
60     if(scalar(@docs) > 0){
61     printf("<dl>\n");
62     foreach my $cols (@docs){
63     my $url = $cols->{url};
64     $url = "." if(!defined($url));
65     my $title = $cols->{title};
66     $title = "(untitled)" if(!defined($title));
67     printf("<dt><a href=\"%s\">%s</a></dt>\n",
68     $cgi->escapeHTML($url), $cgi->escapeHTML($title));
69     my $kwic = $cols->{kwic};
70     if(defined($kwic)){
71     my $cnt = 0;
72     foreach my $text (@$kwic){
73     last if($cnt++ >= 3);
74     $text = $cgi->escapeHTML($text);
75     $text =~ s/\x02/<strong>/g;
76     $text =~ s/\x03/<\/strong>/g;
77     printf("<dd>%s</dd>\n", $text);
78     }
79     }
80     }
81     printf("</dl>\n");
82     }
83    
84     print << "__EOS";
85     </body>
86     </html>
87     __EOS

Properties

Name Value
svn:executable *

  ViewVC Help
Powered by ViewVC 1.1.26