好的站内搜索对增加网站的用户体验是很有帮助的。但是如何做到简单、高效却也并不是太容易。特别是小网站,完全没有必要去搞什么分词搜索技术。个人觉得考虑到以下几点,就可以很好的满足用户的搜索体验,也能给用户提供匹配度较高的搜索结果。
- 搜索字段的权重
数据库里不同字段给予不同的权重,如标题的权重大于内容描述。 - 关键词匹配相关度积分
这里有个Mysql的搜索技巧SELECT title LIKE ‘%php%’ FROM
zhaiduo_blog
;会返回两种结果1或0,
那么既然搜索字段有不同权重,我们可以这样得到不同的相关度:
标题:SELECT (title LIKE ‘%php%’)10 FROMzhaiduo_blog
;会返回两种结果10或0
内容描述: SELECT (description LIKE ‘%php%’)5 FROMzhaiduo_blog
;会返回两种结果5或0
这样我们就可以得到不同字段的相关度得分,从而最终得到总的相关度积分。这也是我们排序的主要依据。 - 关键字密度
相关度积分还应该考虑到关键字的密度因素,给予不同积分 - 搜索结果的展示
把最匹配的结果展示给用户即可,如果搜索结果太多,可以链接到search more的页面。 - 错别字纠正提示、拼写检查
对于常见的关键字错误给予足够的提示是很好的用户体验 - 搜索关键字的防攻击过滤
注意关键字的过滤检查,防止sql注入攻击 - 搜索排序的时效性
相关性有了,也不要忘记时间的因素,应该避免搜索结果09年排在10年之前 - 相关匹配内容的展示
就像Google搜索结果会截取一段相关内容展示出来,可以把搜索的关键字做的更加显眼