注意:AKCMS已于2019年12月27日宣布停止更新,此文档仅供老用户参考,不建议新用户选择AKCMS建站。
注意:AKCMS6.1.2已取消授权机制,文档中关于授权、服务、技术支持等的内容均已失效。
注意:内置的搜索引擎已在新版中废弃,此文档已过期
AKCMS支持两种搜索:基于数据库的字符串搜索和基于搜索引擎的关键词搜索。
二者各有优劣,需要根据自己网站的情况自行选择。本文综合多个方面进行比较,供大家参考。
数据库搜索的优点:
一
数据库搜索能对题目、关键词两个字段进行完全匹配,而不管搜索的是不是一个词;比如一篇文章的题目是:《公安部出台新规遏制交通事故 拿驾照难度提高》,通过“照难”搜索,也能搜索到这篇文章,虽然这不是一个词。
搜索引擎搜索则只能针对自定义的词库,或者自动拆分的关键词进行搜索,再拿上一个例子的题目比喻:如果词库里有“驾照”这个词,就可以搜索到这篇文章;如果没有,则搜索不到。
二
数据库搜索非常简单,直接在模板里插入标签就可以搜索,一个很简单的例子:这就搜索了(当然还可以根据情况加上其他过滤参数,这里仅是一个例子)。
搜索引擎搜索则复杂多了,它需要首先创建搜索引擎,再创建词库(基于关键词字段拆分的不需要事先创建),然后创建排序索引,这些工作做完之后,再在模板中插入标签。和数据库搜索不同的是,需要多加一个参数sid,它的值是搜索引擎的ID。
三
数据库搜索是实时的,只要你修改了文章,立即会体现在搜索结果中。
搜索引擎搜索则不是实时的,它显示的是索引最后一次更新时的搜索结果。(更新索引可通过计划任务实现定时自动执行)
四
数据库搜索除了数据库本身之外不额外占用存储空间
搜索引擎搜索除了数据库空间之外,还占用少量的WEB空间,会生成一堆小文件,文件数=词数×(1+排序数)
以上说的都是数据库搜索的优点,也许您要问了,既然数据库搜索这么好,那搜索引擎搜索有什么必要存在呢?其实搜索引擎有以下不可替代的优点:
一
数据库搜索仅能搜索较小数据量的内容,当数据库较大时就基本不可用了
搜索引擎搜索能支持的数据量比直接搜数据库大百倍以上,当数据量大到一定程度,只能用搜索引擎搜索
二
数据库搜索较慢,数据量少还不明显,当数据量稍微多一些的时候就能感觉到明显得差别,尤其当列表翻页翻到几百页的时候,就更慢了!
搜索引擎搜索比较快,数据量增加几倍速度也不会下降太多,列表翻页到几百页和前几页的速度差别很小,当搜索量大到一定程度,只能用搜索引擎搜索
三
数据库搜索当访问量大的时候会使MySQL进程占用CPU和内存都大大增加
搜索引擎搜索会使PHP进程占用CPU和内存增加,但可接受。(只要有访问,就必然会使CPU、内存占用增加)
四
数据库搜索只能搜索两个字段“题目”和“关键词”,通过指定where参数可以搜索更多字段,但无法搜索正文和扩展字段
搜索引擎搜索可以搜索任何字段,包括:正文和扩展字段
五
数据库搜索只能按照有限的几个字段排序,速度较慢
搜索引擎搜索可以按照任意整数字段(未来还将支持浮点数字段,即小数)排序,速度较快
六
数据库搜索只能知道结果中包含指定的关键词
搜索引擎搜索不但知道有哪些结果,还知道哪些结果中出现关键词的次数多,还可以排序
需要指出的是:AKCMS自带的搜索引擎是我们自主开发的一个超轻量级的引擎,任何主机(SAE等分布式应用平台除外)都可以运行。性能、负载等指标与专业的搜索引擎差距是非常明显的。当数据量超过10GB或数据条数超过100万,就应该考虑使用第三方专业的搜索引擎了(需要独立服务器才可以,虚拟主机无法安装)。第三方搜索引擎可以推荐的有lucene、Sphinx等。
请根据以上分析选择搜索的实现方式。