全文檢索一直都是web方面的關鍵技術,如何在浩如煙海的信息中找到自己想要的信息是人們最關心的。鼎鼎大名的GOOGLE就是一個很成功的例子,網絡上的人們大部分都用GOOGLE來查找自己需要的內容。全文檢索主要有兩個技術指標:快速和精確。前一段時間做了一個新聞系統,老板要加上全文檢索的功能,想了很久才用一個不太高明的方法實現了。現在分享一下,希望是拋磚引玉吧,如果大家有更好的辦法請跟在後邊:)
先介紹一下我的新聞系統:數據庫裡存新聞的基本信息,如標題,發布人,發布時間,主體新聞的文件名。新聞主體是html格式的靜態頁(第一是要提高速度,減少數據庫的壓力。第二是數據庫處理大字符串的時候會有問題。)。全文檢索的思路是:先從數據庫裡把所有的新聞檢索出來,把主體新聞找到,然後通過io操作把主體新聞讀到一個字符串中。再去掉多余的東西,象html標記什麼的,再用正則表達式對這個字符串查找,如果找到符合條件的信息,就記錄這條新聞。最後返回所有的符合條件的新聞顯示給用戶。
下面這段代碼是輸入查詢條件的代碼,查詢關鍵字用”+”隔開:search.jsp
<html>
<head>
<link rel="stylesheet" href="css/style3.css">
<title>新聞搜索</title>
<script language="javascript">
function subform(){
if (document.zl_form.keyword.value==""){
alert("請輸入關鍵字!");
document.zl_form.keyword.focus();
return false;
}
return true;
}
</script>
</head>
<body bgcolor="#F0F6E2">
<form name="zl_form" target="_new" method="post" action="aftsearch.jsp" onsubmit="return subform()">
<table width="600" bgcolor="#F0F6E2">
<tr>
<td colspan="4" height="10"> </td>
</tr>
<tr>
<td width="14%">輸入查詢關鍵字:</td>
<td align="left" width="65%">
<input size="50" type="text" name="keyword" style="font-size: 9pt">