最新消息:xilo的博客2016重新上线,感谢新老朋友的热情关注。

PHP站内搜索解决方案[原创]

开发 xilo 1423浏览 0评论

好久没写技术文章了。最近也是在公司开发Oready项目,所以一直没能抽出时间。

这次的问题是 站内搜索 相信大家开发项目是都会遇到这个问题。以至于我在开发下个项目时,曾一度想把所有类似新闻样式的信息放到一个表中。当然这种想法也不是一点可取之处也没有。当所有信息都类似且均以文章样式呈现给用户时,可采用这种方法,缺点是中间层处理上容易造成混乱,代码不可读,数据冗余。

好了切入正题。

解决方案一:

采用Google站内搜索。好处是:简单,直接,省时。可用在个人Blog或者小型企业网站,或者临时站点上。缺点:最大的缺点不是Google图标,而是需要一个缓冲的时间,等待Google收录你的站点信息,当然专业网站同样不适用这种小方法。

解决方案二:

首先,写个分词算法。这个是基础。其次,后台数据保存数据时进行分词,把分词结果存另外的表,信息包括被处理的记录ID,分词后的词语hash值。然后,当搜索时,先进行分词,求每个词的 hash值,select id from table where hash = $hash union…

这个估计是很多大型专业站点的通用方法。关键在分词。优点:专业,好处多多,能够被用户所接受。缺点:开发周期长,麻烦。

好在现在有现成的分词插件,开发者只需安装,修改,调试即可达到全文搜索。不过,还不会应用到我的项目中,究其原因就是企业的稳定性大于一切。

下面给出MYSQL的-5.1.11~12 全文检索分词插件【链接

还有一个是Sphinx【链接

解决方案三:

lucene搜索 (重量级别的。)

推荐一篇很好的文章 http://www.ibm.com/developerworks/cn/opensource/os-php-apachesolr/index.html

正所谓条条大路通罗马,应该还有其它更加完善的方案,我在这里举出的是我能想到的。

原创作品,转载须告知,谢谢。

 

转载请注明:xilo blog » PHP站内搜索解决方案[原创]

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址