Php 复杂搜索解决方案
首先,这不一定是个问题。。但我真的想知道你对这种“模式”搜索的性能和可能存在的问题的看法 我需要在多个表上创建一个非常复杂的搜索,其中包含大量过滤器、范围和规则。。。我意识到我可以创造这样的东西:Php 复杂搜索解决方案,php,mysql,search,complexity-theory,Php,Mysql,Search,Complexity Theory,首先,这不一定是个问题。。但我真的想知道你对这种“模式”搜索的性能和可能存在的问题的看法 我需要在多个表上创建一个非常复杂的搜索,其中包含大量过滤器、范围和规则。。。我意识到我可以创造这样的东西: 提交搜索表 在内部,我一步一步地运行每个过滤器和逻辑(这可能需要几秒钟) 找到所有匹配记录(我想要的结果)后,我在搜索表上创建一条记录,生成此搜索的标记(基于搜索参数),如86f7e437faa5,并保存所有匹配记录ID 将访问者重定向到mysite.com/search?token=86f7e437
搜索
表上创建一条记录,生成此搜索的标记(基于搜索参数),如86f7e437faa5,并保存所有匹配记录ID搜索
表中检索)
这将大大加快刷新和分页速度,因为我不需要在每个页面视图上运行所有搜索逻辑。如果用户更改了过滤器或搜索条件,我将返回步骤2并生成一个新的搜索令牌
我从来没有看过这方面的教程,但我认为像BBForum或Invision这样的论坛和搜索有什么关系,对吗?在搜索之后,我被重定向到search.php?id=1231(我在URL或POST参数中没有看到搜索参数)
此“代币”的使用时间不会超过30分钟~1小时。。因此,“静态搜索”只是出于性能原因
你觉得这个怎么样?行吗?有什么考虑吗?:) 对我来说似乎很合乎逻辑 话虽如此,根据您的应用程序描述,您是否考虑过使用Sphinx。不管有多少表和/或过滤器和/或规则,所有耗时的工作都是在索引中完成的,并且是在事前/幕后完成的。过滤/规则/字段/表都是在事后快速完成的 因此,与您的情况类似,斯芬克斯可以很快给您一组ID,因为所有的艰苦工作都是预先完成的。TiuTalk 您是否考虑将搜索保存在“搜索”表中?如果是这样,请记住,对于给定的一组参数,基于param生成的令牌将保持不变,并持续时间。如果你的搜索库经常被修改,你不能依赖保存的搜索,因为它可能会返回过时的结果。否则,这似乎是一个很好的解决方案 我宁愿将令牌基于用户会话。你觉得怎么样
@g0nc1n如果您可以控制服务器(例如在VPS中),Sphinx似乎是一个不错的解决方案
如果你不这样做,而且简单的全文搜索对你来说还不够,我想这是一个很好的解决方案。但对我来说,它似乎与带缓存的分页搜索没有太大区别。它似乎比带有简单url引用缓存的分页搜索更好。但您仍然存在搜索保持静态的问题。我建议您不时刷新保存的搜索。您的系统可能有特殊的令牌,如86f7e437faa5和缓存搜索请求。对于系统效率和可伸缩性来说,这是一种非常有用的机制 但用户必须根据可用性原则查看所有参数 因此,在服务器端动态生成参数散列将是一个很好的解决方案。系统检查搜索表中是否存在泛型哈希,如果找到,则返回结果。
如果没有散列,系统将从基表进行查询,并将新结果保存到搜索表中。从默认的sphinx.conf开始,我真正用作资源的是在线文档----及其论坛。由于截止日期,我不会在这个项目中使用sphinx。顺便说一句,这是一个很好的解决方案,我稍后会检查它。不过还是要谢谢你!:)