5.18 书签共享系统——书签检索
在5.15节中已经介绍过了利用标签(tag)来检索书签的应用。实际上,本系统还提供更强大的书签检索功能——在网页顶部的显要位置的检索框输入检索对象关键字,就可以在全体书签中检索出需要的书签。同时点击书签标题后的书签所属网站的链接,也可以检索出与此网站相关的所有书签。
要点
关键字检索是以关键字为条件对表bm_key中关键字列(keyword)进行模糊检索。即以下述的形式组织检索条件。
而网站地址检索,将对bm_master中的书签网址URL进行模糊检索。检索条件如下。
目录
代码
检索功能有两种情况:一种为在form中输入搜索文字后进行的检索,这种情况下通过getPost方法取得搜索条件信息,另一种是直接将搜索条件放在Query信息中,这时用getQuery取得搜索条件信息。
复原经过了代码转换的关键字。没有转换时,经过此处理也不会出错。
调用检索方法doSearch进行实际的检索处理。
根据标志变量flag的不同,确定是否显示master页。
在检索页面使用了Ajax技术,在JavaScript脚本内部调用此检索动作(action)时,是不需要master页的。Ajax技术的特点可以只更新检索页面的一部分。
检索方法中会根据条件(类型type)的不同调用两个方法。类型为URL时,调用doUrlSearch方法检索同一网址中的所有书签;类型为key时,调用doKeyWordSearch方法检索包含相同关键字的所有书签。
根据检索条件不同,设置按钮名称。
调用getSubtitle方法设置检索结果的标题。
splitKeys方法将字符串分离成字符串数组。
将所有的全角空格替换为半角。
将空格(一个以上)替换为逗号。
explode函数用于将以逗号分割的字符串分离成字符串数组。
分离输入字符串中含有的URL(有含有多个URL的情况)。
组合检索条件。
构造检索新追加书签的SQL。注意,检索结果以书签的更新时间为顺序排列。
构造检索人气度高的书签的SQL。检索结果以人气度(被收藏的次数)为顺序排列。
构造检索最近关注度高的书签的SQL。检索条件中追加了人气度大于2(best.c>2)的条件,而且检索结果以书签的更新时间为顺序排列。
循环替换检索中的置换位(key*)。
对检索结果进行格式化。
调用getBookmarkDetails检索书签的补充信息,此方法已经在5.14节作了有关解说,此节不再赘述。
定义按关键字检索书签的方法。方法中的逻辑与doUrlSearch方法非常相似,唯一不同的地方是检索条件的合成代码。
关键字检索的对象表是bm_key,而doUrlSearch方法的检索对象是bm_master。