反向搜索最佳实践?

edu*_*dub 8 python django search reverse

我正在制作一个需要反向搜索的应用程序.通过这个,我的意思是应用程序的用户将输入搜索参数并保存它们; 然后,当任何新对象进入系统时,如果它们与用户已保存的现有搜索参数匹配,则将发送通知等.

我很难找到解决这类问题的方法.

我正在使用Django并考虑构建搜索并使用Q对象对它们进行挖掘,如下所示:http://www.djangozen.com/blog/the-power-of-q

我看到它的方式,当一个新对象进入数据库时​​,我将不得不从数据库中加载每个保存的查询,并以某种方式针对这一个新对象运行它,以查看它是否与该搜索查询匹配...看起来不太理想 - 以前有人解决过这样的问题吗?

Wil*_*ill 4

在数据库级别,许多数据库提供“触发器”。

另一种方法是使用定时作业,定期从数据库中获取自上次运行以来具有上次修改日期的所有项目;然后这些内容会被过滤并发出警报。您也许可以将一些过滤放入数据库中的查询语句中。然而,如果项目被删除时需要发送通知,这就有点棘手。

您还可以将触发器手动放入向数据库提交数据的代码中,这可能更灵活,并且当然不依赖于数据库的特定功能。

触发器和警报进行通信的一个好方法是通过消息队列 - RabbitMQ和其他AMQP实现等队列将随您的站点进行扩展。