账号通
    

账号  

密码  

8642

查看

22

回复
主题:科讯全站搜索改进问题 [收藏主题] 本贴被认定为精华 转到:  
liboyi 当前离线

419

主题

0

广播

2

粉丝
添加关注
级别:四年级

用户积分:3961 分
登录次数:212 次
注册时间:2008/11/21
最后登录:2022/4/20
liboyi 发表于:2011/8/6 10:24:18   | 显示全部帖子 查看该作者主题 楼主 
做在线知识付费 选科汛云开店

科讯全站搜索有一个问题,就是检索出来的东西,和关键词匹配度不高,相当不高。



于是尝试改进一下科讯全站搜索,适合SQL版本。



1.首先确认使用SQL中的全文检索功能。



那么先在KS_ItemInfo表中建立一个字段fulltext,把tilte+keywords+intro,这些内容揉合在一起写进。

在数据库查询

UPDATE KS_ItemInfo

SET  FullText = title + '<br>' + CONVERT(varchar(200),intro)+'<br>'+CONVERT(varchar(100),keywords)

WHERE (ID IS NULL) OR (FullText IS NULL)



2.在SQL中点开数据表,新建全文索引目录,取名fulltext.



3.修改plus/search/index.asp



找到Sub InitialSearch() 函数

If TopNum<>0 Then TopStr=" Top " & TopNum

   

    If ChannelID=0 Then

     ModelTable="KS_ItemInfo INNER JOIN CONTAINSTABLE(KS_ItemInfo, FullText, '" &Key& "') TP ON  KS_ItemInfo.ID = TP.[KEY]"

     FieldStr="ID,Tid,Title,ChannelID,InfoID,Intro,AddDate,Fname"

    ElseIf ChannelID=102 Then



修改这段代码,将MODETABLE修改为 全文检索



If ChannelID=102 Then

    ElseIf ChannelID=0 Then

       OrderStr="ORDER BY TP.RANK DESC"

    Else

     OrderStr=" Order by hits asc,id desc"

    End If



下面这个增加一个判断,如果Channelid=0 排序按照全文检索RANK排序。





大致就完了,检索出的结果和关键词匹配程度增加了不少。还算满意。



http://www.haqpcn.cn/plus/search/?q=eppendorf&tr=site&sa=Google+%CB%D1%CB%F7&domains=haqpcn.cn&cx=partner-pub-8473922514373072%3Au8cyxoa4qoj&ie=GB2312&m=0&stype=1



我的网站,大家别黑我,就演示一下。搜索eppendorf,结果还可以。比以前好很多。



这里我把关键词KEY接收参数改为q, 是因为改造了一下搜索框。



既可以使用google搜索,也可以使用本站搜索,切换按钮。





点击查看原图



样式这样,加入google搜索代码,既赚广告费,又不耽误搜索,而且还可以切换。

google的关键词接收参数是q,所以把key改为q

Sub InitialSearch()

    Key=KS.CheckXSS(KS.R(KS.S("q")))



  Sub SearchMenu()

下key都改为 q



就写到这,抛砖引玉,希望全站搜索使用SQL全文检索功能,这样匹配度要高很多。



希望官方能帮助我们优化代码,我水平有限,先写到这。

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
<上一主题 | 下一主题 >
Powered By KesionCMS Version X1
厦门科汛软件有限公司 © 2006-2016 页面执行0.07422秒 powered by KesionCMS 9.0