如何存储搜索条件或搜索结果?

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】:

存储搜索条件。这很明显,好像数据更改用户会得到旧的结果。并考虑一段时间后结果可能占用的空间:)

我还会考虑真正存储搜索条件而不是实际查询。如果您更改数据库,存储的搜索仍然可以工作,因为您还需要更新查询生成引擎,但您很可能会忘记更新每个存储的查询。

【讨论】:

以上是关于如何存储搜索条件或搜索结果?的主要内容,如果未能解决你的问题,请参考以下文章

Nosql中按值或条件值搜索记录,拥有1亿条记录

如何使用条件语句将两个搜索结果语句合二为一?

如何在弹性搜索查询中组合和

Wordpress:WP_Query 如何使用自定义帖子类型应用搜索条件

如何测试淘宝 的搜索系统???

带有可能缺少某些搜索条件的查询的 Oracle 存储过程