页面结构。
index.jsp 就 一个form表单收集用户输入的关键字,还有个地区 提交至result.jsp
result.jsp 查询结果并显示
ajax.jsp 在result.jsp通过jquery调用异步请求 显示查询结果中的分类
result.jsp中用的nutchBean.search方法 查询结果
传入query对象,通过query.getParams().initform(start + hitsToRetrieve, hitsPerSite"去重复字段","排序字段","升(true)降(false)")方初始化查询条件 前面几个数字没深究是干什么的,应该是查询从第几条到第几条数据把。
然后调用search(query)方法,search方法调用的nutchbean.java的search方法,
在nutchbean.java中的search方法的前部分
if (query.getParams().getMaxHitsPerDup() <= 0)
return searchBean.search(query);
通过这个判断就直接调用SearchBean.search(query)方法跳出去了
在searchbean的构造方法中发现
searchbean被选择性的赋给 DistributedSearchBean的实例 或 LuceneSearchBean的实例
我这里是LuceneSearchBean的实例,进入LuceneSearchBean的search(query)方法中发现
LuceneSearchBean又调用了IndexSearcher.search (query) 方法
在 IndexSearcher.search (query) 方法
translateHits(TopDocs topDocs, String dedupField,String sortField) 这个方法还不知道是干什么的
optimizer.optimize( luceneQuery, luceneSearcher,
query.getParams().getNumHits(),
query.getParams().getSortField(), query.getParams().isReverse() )
进入这个方法发现最后
return searcher.search(query, filter, numHits, new Sort(new SortField(sortField, SortField.STRING, reverse)));
通过query.getparams().initform()传入的排序字段,在这里构造成sort对象然后把查询结果返回