在你们所有人的帮助下,我终于成功地让 Solr 工作了,所以谢谢你们! 而且我不得不说,我现在明白你为什么推荐它了,它真的很强大。
现在,讨论这个问题...
我已将所有“可搜索”信息索引到 Solr
中,我的计划是查询 Solr,然后获取查询结果的 ID:s
(所有记录(即每条记录都有一个 ID 字段值),然后我用它来查询 MySQL
并获取其余信息。
因此,首先查询 Solr,接下来 solr 发送回与查询匹配的所有广告的 id:s,然后我使用 ID:s 查询 MySQL 以获取其余信息。
我的问题是,当使用 MySql 执行该部分时,我是否应该将所有收到的 ID:s 保存到一个 array
中,然后 query mysql
查找所有记录那些ID:s?
我应该做这样的事情吗? (可能包含一些代码错误):
for ($i=0; $i<$id_from_solr.length; $i++){
mysql_query("SELECT * FROM table_name WHERE ad_id=$id_from_solr[$i]");
}
上面似乎不是像一个好的解决方案,因为它每次再次循环时都会执行“新查询”!
你会怎么做?
后续问题: 与不使用排序函数相比,在 MySQL 查询中添加排序函数会减慢速度吗?例如:
ORDER BY insert_date ASC
最后一个问题: 是否有办法缓存 MySQL 结果,以便在排序时,我不必进行新查询?
非常感谢!
如果您需要更多意见,请告诉我,我将更新此问题!
最佳答案
问题 1(检索 ID,然后查询数据库):为什么不从 Solr 查询中返回一些字段,这样您就不必总是访问数据库?
Q2(性能和排序):嗯,排序代表了对数据执行的额外任务,因此必然会为数据库添加一些工作:这当然可以最小化如果您的 ORDER BY
列上有索引。
Q3(捕获 MySql 查询):您可以打开 MySql 缓存(如果请求与前一个请求匹配,假设数据未更改,它将返回结果的缓存副本)在此期间),或者使用数据库外部的缓存层,例如 EhCache:
关于php - 我应该如何查询 MySQL 以及如何缓存 MySQL 的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2173201/