148补尚学堂科技张志宇lucene构建一个简单的WEB搜索程序.docx
《148补尚学堂科技张志宇lucene构建一个简单的WEB搜索程序.docx》由会员分享,可在线阅读,更多相关《148补尚学堂科技张志宇lucene构建一个简单的WEB搜索程序.docx(39页珍藏版)》请在冰豆网上搜索。
![148补尚学堂科技张志宇lucene构建一个简单的WEB搜索程序.docx](https://file1.bdocx.com/fileroot1/2022-11/24/789e6492-b4cf-45d3-85f6-152c6ef9c8e2/789e6492-b4cf-45d3-85f6-152c6ef9c8e21.gif)
148补尚学堂科技张志宇lucene构建一个简单的WEB搜索程序
148_补_Lucene_构建一个简单的WEB搜索程序
1.搜索结果加上链接
results.jsp
String_title=doc.get("title");
String_path=doc.get("path");
_path=_path.replaceAll("E:
\\\\app\\\\develop\\\\java\\\\api\\\\html_zh_CN\\\\html\\\\zh_CN\\\\api\\\\","");
_path=_path.replace('\\','/');
_path="http:
//127.0.0.1/api/"+_path;
……
"> <%=_title%> | 2.解决摘要中有’<’等字符的问题
DataFilter.java
packagecom.bjsxt.lucene.util;
publicclassDataFilter{
publicstaticfinalStringescapeHTMLTags(Stringsourcestr){
if(sourcestr==null){
return"";
}
sourcestr=sourcestr.replaceAll("\\x26","&");//&
sourcestr=sourcestr.replaceAll("\\x3c","<");//<
sourcestr=sourcestr.replaceAll("\\x3e",">");//>
sourcestr=sourcestr.replaceAll("\\x09"," ");//tab键
sourcestr=sourcestr.replaceAll("\\x20"," ");//空格
sourcestr=sourcestr.replaceAll("\\x22",""");//"
sourcestr=sourcestr.replaceAll("\r\n","
");//回车换行
sourcestr=sourcestr.replaceAll("\r","
");//回车
sourcestr=sourcestr.replaceAll("\n","
");//换行
returnsourcestr;
}
}
results.jsp
String_summary=doc.get("summary");
……
<%=DataFilter.escapeHTMLTags(_summary)%> | 3.登陆/注销
Index.jsp
<%@pagelanguage="java"import="java.util.*"pageEncoding="GB18030"%>
搜索系统if(top.location!
=self.location){
top.location=self.location;
}
4.解决缓存问题
include.jsp
<%
response.addHeader("Cache-Control","no-cache");
response.addHeader("Expires","Thu,01Jan197000:
00:
01GMT");
%>
5.改变默认布尔逻辑
SearchBean.java
parser.setDefaultOperator(QueryParser.AND_OPERATOR);
6.按照文档得分进行排序
searchForm.jsp
关键词:
每页显示条
排序:
得分
大小
results.jsp
<%@pagelanguage="java"import="java.util.*"pageEncoding="GB18030"%>
<%@includefile="include.jsp"%>
functioncheckdata(){
if(!
check_empty(searchForm.query.value)){
alert("不能为空");
returnfalse;
}
returntrue;
}
<%
intstart=0;
try{
start=Integer.parseInt(request.getParameter("start"));
}catch(Exceptione){}
intmaxresults=10;
try{
maxresults=Integer.parseInt(request.getParameter("maxresults"));
}catch(Exceptione){}
%>
关键词:
">
>
">
>得分
>大小
<%
//Stringindex="D:
\\share\\TOOLS\\apache-tomcat-5.5.17\\apache-tomcat-5.5.17\\webapps\\index";
Stringindex="C:
\\tomcat\\index_cn";
StringqueryStr=request.getParameter("query");
StringfieldSorted=request.getParameter("fieldSorted");
Stringreversed=request.getParameter("reversed");
IndexSearchersearcher=newIndexSearcher(index);
//TermQueryquery=newTermQuery(newTerm("title",queryStr));
QueryParserparser=newQueryParser("title",newMMAnalyzer());
parser.setDefaultOperator(QueryParser.AND_OPERATOR);
Queryquery=parser.parse(queryStr);
Sortsort=null;
if(fieldSorted.equals("RELEVANCE")){
sort=Sort.RELEVANCE;
}
Hitshits=searcher.search(query,sort);
%>
总共找到<%=hits.length()%>条记录
序号 | 路径 | 得分 |
<%
if(hits.length()>0){
System.out.println(hits.length());
for(inti=start;iif(i>=hits.length())break;
Documentdoc=hits.doc(i);
String_summary=doc.get("summary");
String_title=doc.get("title");
String_path=doc.get("path");
_path=_path.replaceAll("E:
\\\\app\\\\develop\\\\java\\\\api\\\\html_zh_CN\\\\html\\\\zh_CN\\\\api\\\\","");
_path=_path.replace('\\','/');
_path="http:
//127.0.0.1/api/"+_path;
%>
<%=i+1%> | "> <%=_title%> | <%=hits.score(i)%> |
<%}
}
%>