如何存储搜索条件或搜索结果?
Posted
技术标签:
【中文标题】如何存储搜索条件或搜索结果?【英文标题】:How to store search criteria or search results? 【发布时间】:2011-01-02 10:42:19 【问题描述】:我有一个 php 分类网站(主要是),我目前正在使用 mysql 作为数据库。 稍后我将使用 SOLR 或 Sphinx 作为“搜索引擎”。
我想让用户能够查看他们之前进行的搜索的“结果”,但我不知道从哪里开始......
这是怎么做到的?
目前我有一个已填写的表单,当提交时,php 只是再次检查一个 mysql 表以查看是否有任何匹配项。
我应该存储“搜索条件”并在用户每次点击他们以前的搜索时进行新的搜索,还是应该存储结果?我宁愿重新搜索,因为自上次搜索后可能已插入新项目!
如果您需要更多意见,请告诉我,我会更新此 Q。
谢谢
【问题讨论】:
你自己回答了你的问题。 “我应该存储‘搜索条件’并在用户每次点击他们以前的搜索时进行新的搜索,还是应该存储结果?我更愿意进行新的搜索,因为自最后搜索!”这回答了您的查询,无论如何您都需要进行新的搜索,因为 1. 正如您所指出的,可能已添加新项目 2. 与存储搜索结果相比,存储搜索条件总是更容易并且占用更少的空间。所以,只需存储搜索条件。 【参考方案1】:嗯...如果您基本上是在谈论“已保存的搜索”,我目前正在做类似的事情,所以我只有一个单独的表...
saved_search_id(主要)| user_id (外文) |搜索名称 |标准1 |标准2 |标准3 ...等
所以基本上我现在可以向用户显示他们创建的已保存搜索的列表,并且该表存储了作为该搜索一部分的条件。然后我可以随时使用这些保存的条件运行保存的搜索。
这有帮助吗?
【讨论】:
【参考方案2】:对搜索表单使用查询字符串参数 ($_GET
)。然后用户可以为搜索添加书签。如果需要,您可以在应用程序中创建书签功能,但实际上没有必要。
如果您担心性能,请确保正确调整数据库的缓存设置,并且不要过于频繁地写入表。那时MySql会做好缓存工作。
【讨论】:
【参考方案3】:您已经说过:如果用户应该看到旧查询的新结果,您必须以某种方式存储搜索参数并在用户请求时重新进行搜索。
【讨论】:
【参考方案4】:存储搜索条件。这很明显,好像数据更改用户会得到旧的结果。并考虑一段时间后结果可能占用的空间:)
我还会考虑真正存储搜索条件而不是实际查询。如果您更改数据库,存储的搜索仍然可以工作,因为您还需要更新查询生成引擎,但您很可能会忘记更新每个存储的查询。
【讨论】:
以上是关于如何存储搜索条件或搜索结果?的主要内容,如果未能解决你的问题,请参考以下文章