<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*" import="java.io.*" import="java.net.*" import="tokyocabinet.*" %> <%! String dbpath = "/home/mikio/casket.tct"; String enc(String str){ str = str.replaceAll("&", "&"); str = str.replaceAll("<", "<"); str = str.replaceAll(">", ">"); str = str.replaceAll("\"", """); return str; } %> <% request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); String expr = request.getParameter("expr"); List docs = new ArrayList(); if(expr != null && expr.length() > 0){ TDB tdb = new TDB(); tdb.open(dbpath, TDB.OREADER); TDBQRY tqry = new TDBQRY(tdb); tqry.addcond("title", TDBQRY.QCFTSEX, expr); tqry.setorder("title", TDBQRY.QOSTRASC); tqry.setlimit(30, 0); TDBQRY bqry = new TDBQRY(tdb); bqry.addcond("body", TDBQRY.QCFTSEX, expr); bqry.setorder("title", TDBQRY.QOSTRASC); bqry.setlimit(30, 0); TDBQRY[] oqrys = { bqry }; List res = tqry.metasearch(oqrys, TDBQRY.MSUNION); Iterator resit = res.iterator(); while(docs.size() < 30 && resit.hasNext()){ byte[] pkey = (byte[])resit.next(); Map cols = tdb.get(new String(pkey, "UTF-8")); if(cols != null){ String[] kwic = bqry.kwic(cols, null, 20, TDBQRY.KWMUCTRL); cols.put("kwic", kwic); docs.add(cols); } } tdb.close(); } %> Tiny Search by Java

Tiny Search by Java

">
<% if(docs.size() > 0){ out.println("
"); Iterator docit = docs.iterator(); while(docit.hasNext()){ Map cols = (Map)docit.next(); String url = (String)cols.get("url"); if(url == null) url = "."; String title = (String)cols.get("title"); if(title == null) title = "(untitled)"; out.println("
" + enc(title) + "
"); String[] kwic = (String[])cols.get("kwic"); if(kwic != null){ for(int i = 0; i < 3 && i < kwic.length; i++){ String text = enc(kwic[i]); text = text.replaceAll("\u0002", ""); text = text.replaceAll("\u0003", ""); out.println("
" + text + "
"); } } } out.println("
"); } %>