#! /usr/bin/ruby require 'cgi' require 'tokyocabinet' include TokyoCabinet DBPATH = "/home/mikio/casket.tct" cgi = CGI::new scriptname = cgi.script_name expr = cgi.params["expr"][0] docs = [] if expr && expr.length > 0 tdb = TDB::new tdb.open(DBPATH) tqry = TDBQRY::new(tdb) tqry.addcond("title", TDBQRY::QCFTSEX, expr) tqry.setorder("title", TDBQRY::QOSTRASC) tqry.setlimit(30, 0) bqry = TDBQRY::new(tdb) bqry.addcond("body", TDBQRY::QCFTSEX, expr) bqry.setorder("title", TDBQRY::QOSTRASC) bqry.setlimit(30, 0) res = tqry.metasearch([ bqry ], TDBQRY::MSUNION) res.each do |pkey| break if(docs.length >= 30) cols = tdb.get(pkey) if cols kwic = bqry.kwic(cols, nil, 20, TDBQRY::KWMUCTRL) cols["kwic"] = kwic docs.push(cols) end end tdb.close() end xexpr = expr ? CGI::escapeHTML(expr) : "" print(cgi.header({ "charset" => "UTF-8" })) print <<__EOS