PHPCMS 2008重新生成搜索索引
2012-07-03 10:25
225 查看
我实在想不出来为什么PHPCMS的搜索模块不提供一个按钮来刷新所有搜索结果并更新所有搜索的索引数据.
如果你提供缓存机制, 那么就必须要提供一个强制缓存的方法, 而PHPCMS的搜索提供了两层缓存, 一是 phpcms_search 这个表来提供索引缓存, 然后在数据库缓存的基础上又提供了文件缓存机制, search/data/ 文件夹下的都是文件缓存, 但是后台管理里面居然一个清空缓存的选项都没有, 必须手动去清除.
我是真不知道这样设计是怎么想的, 如果URL规则变了, 同样的文章名出现, 文章被删除了, 此搜索都会出问题, 搜索出来的全部都是旧结果, 不存在的文章, 而你想刷新缓存? 没门.
查到的资料, 手动清空刷新搜索缓存的办法是.
步骤:
清空文件缓存 : /search/data/ 下的所有文件和文件夹.
清空数据库数据 : 执行SQL命令 truncate phpcms_search .
将所有文章都标记为未索引 : 执行 update phpcms_content set searchid='0' , 很明显它给每篇文章设置了索引值, 只有在该ID为0时, 下次才会对这篇文章重新生成索引ID.
重新生成索引 : 这里可以用 [生成HTML]-[更新URL] 的操作达到这个目的, 它在更新URL的时候会去读刚才设置的 searchid . 而且即使你没有使用HTML缓存机制这个操作也是一样可以帮你重新生成索引的.
关于为什么一件很简单的事情会变得这么麻烦, 我就不吐槽了, 最后说下我用的PHPCMS版本是 2008 sp4 .
如果你提供缓存机制, 那么就必须要提供一个强制缓存的方法, 而PHPCMS的搜索提供了两层缓存, 一是 phpcms_search 这个表来提供索引缓存, 然后在数据库缓存的基础上又提供了文件缓存机制, search/data/ 文件夹下的都是文件缓存, 但是后台管理里面居然一个清空缓存的选项都没有, 必须手动去清除.
我是真不知道这样设计是怎么想的, 如果URL规则变了, 同样的文章名出现, 文章被删除了, 此搜索都会出问题, 搜索出来的全部都是旧结果, 不存在的文章, 而你想刷新缓存? 没门.
查到的资料, 手动清空刷新搜索缓存的办法是.
步骤:
清空文件缓存 : /search/data/ 下的所有文件和文件夹.
清空数据库数据 : 执行SQL命令 truncate phpcms_search .
将所有文章都标记为未索引 : 执行 update phpcms_content set searchid='0' , 很明显它给每篇文章设置了索引值, 只有在该ID为0时, 下次才会对这篇文章重新生成索引ID.
重新生成索引 : 这里可以用 [生成HTML]-[更新URL] 的操作达到这个目的, 它在更新URL的时候会去读刚才设置的 searchid . 而且即使你没有使用HTML缓存机制这个操作也是一样可以帮你重新生成索引的.
关于为什么一件很简单的事情会变得这么麻烦, 我就不吐槽了, 最后说下我用的PHPCMS版本是 2008 sp4 .
相关文章推荐
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC DBREINDEX对指定数据库中的表重新生成一个或多个索引
- phpcms搜索不能重新生成缓存的解决方法
- phpcms搜索不能重新生成缓存问题
- 重新生成和组织索引
- 重新生成索引和重新组织索引
- 重新生成索引存储过程 sp_rebuild_index
- 【BZOJ 1016】[JSOI2008]最小生成树计数(搜索+克鲁斯卡尔)
- 重新组织和重新生成索引sp_RefreshIndex
- SQL Server 2008 转换为 SQL 2005 数据库 脚本生成方式(解决主键、索引、标识等数据库约束丢失)
- 重新生成 SQL Server 2008 实例的系统数据库
- 重新生成索引
- 如何重新生成索引
- 第6章、核心存储和索引结构(Sqlserver存储、理解索引、创建修改删除索引、维护索引、索引重新生成)
- pandas重新生成索引的方法
- SQL2005重新生成索引的的存储过程 sp_rebuild
- lucene搜索 索引无法生成 两次解决方案
- SQL Server 重新组织生成索引
- 重新组织和重新生成索引
- 重新生成索引标号与取消原来的索引标号
- bzoj1016: [JSOI2008]最小生成树计数(最小生成树+搜索)