您的位置:首页> 日志> 动易系统 正文
DTOP

打败搜索之:全站按模型搜索

大话主席 | 2011年08月12日 |

>>收藏本文 已有 3条评论

一、需求分析:

经常有客户要求搜索全站的“图片”、“文章”、“视频”等,而我们系统默认是无这样的标签的。怎么办?改标签。

 直接下载使用:文章结尾

 

二、默认搜索介绍(大神跳过):

系统的搜索是根据url的参数来决定读取那个页面的,下面就是我们系统搜索功能的详解说明url: /search.aspx?searchtype=1&modelId=2&nodeId=2&Keyword=dd&fieldOption=title
参数说明:
searchtype:搜索类型 0全站搜索; 1模型搜索;  2专题搜索
modelId:模型id,当searchtype=1时才有效
nodeId:节点id
kewword: 搜索关键词
fieldOption: 搜索字段,title:标题,keyword:关键词,Content:内容,author:作者,inputer:录入者。

当searchtype=0时,系统会跳到 其他模板/搜索页模版.html
当searchtype=1时,系统会根据modelId的值跳转到对应的模型搜索模板,例如modeId=1时,会跳到
其他模板/文章栏目搜索页模板.html

 

三、思考解决方案

客户要求:搜索全站的“图片”、“文章”、“视频”等
根据系统默认情况,全站搜索不会区分模型,而栏目内搜索必须限定nodeid,就是说必须在某栏目下搜索。
既然如此我们就在“全站搜索按标题.config”基础上修改,让他能接收modeId参数,从而实现我们的需求。

 

四、标签修改

具体标签修改过程就省略了,有兴趣的看以看看标签内部。
我在“全站搜索按标题.config”标签,增加了2个参数
searchModel 和 models

介绍:
searchModel :
是否搜索模型,结合models使用。
searchModel="notIn" models="0" 全站搜索
searchModel="notIn" models="1,2" 不搜索模型1和2
searchModel="in" models="1,2" 只搜索模型1和2

什么时候需要用到“排除某模型搜索呢?”

有时候全站搜索会吧“友情链接”、“留言”、“评论”等模型的信息都搜索出来,而这些通常来说不是用户的需要,所以此时我们可以通过 searchModel="notIn" models="xx,xx" 来排除某些不需要搜索的模型。

调用方式:
默认是全站搜索

全站搜索:
{PE.Label id="全站搜索按标题" keyword="" outputQty="25" titleLength="50" searchModel="notIn" models="0"  /}

搜索全站文章模型:
{PE.Label id="全站搜索按标题" keyword="" outputQty="25" titleLength="50" searchModel="in" models="1"  /}
如此类推。

 

五、使用方式

1、修改url:
   /search.aspx?searchtype=1&modelId=1&Keyword=dd

2、覆盖原来的“全站搜索按标题.config”

3、修改模板,由于标签默认是全站搜索的,那么只需要修改"**栏目搜索页模板.html"里面的搜索标签就可以了,例如 "文章栏目搜索页模板.html"的搜索标签是:
{PE.Label id="文章栏目内搜索" titleLength="50" contentLength="0" parentId="0" fieldname="" fieldvalue="" /}

我们用一下标签替换即可:
{PE.Label id="全站搜索按标题" keyword="" outputQty="25" titleLength="50" searchModel="in" models="1"  /}


标签下载和具体例子