如何使用 Sphinx 搜索检索所有文档 ID
对于 Google 站点地图 XML,我需要 Sphinx 收集的所有文档 ID。但对于 1000 多个文档,如果我尝试在一个简单的循环中获取所有文档,最终会出现错误:searchd 错误:偏移超出范围(offset=1000,max_matches=1000)
。
我可以增加 max_matches 设置,但这会降低性能。
我不想简单地运行 MySQL 查询,因为 Sphinx 索引器查询中有一个 UNION 和一堆检查/规则。我希望在一个地方查询可维护性。
所以我现在所做的是,对于每个类别(我也需要这些类别用于站点地图),我运行一个按类别过滤的 Sphinx 查询。这样我就可以保持在 1000 个文档限制以下。
对此必须有更好的解决方案。正确的?
For a Google sitemap XML, I need all document id's collected by Sphinx. But with 1000+ documents, if I try to get them all in a simple loop, it ultimately gives me Error: searchd error: offset out of bounds (offset=1000, max_matches=1000)
.
I could increase the max_matches
setting, but that would kill performance.
And I don't want to simply run a MySQL query, because there's a UNION and a bunch of checks/rules in the Sphinx indexer query. And I want my query on one place for maintainability.
So what I've done now is, for each category (I need those too for the sitemap), I run a Sphinx query filtered on category. That way I stay below the 1000 documents limit.
There must be a better solution for this. Right?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我在这里发布了 PHP 代码:
http://sphinxsearch.com/forum/view.html?id=7215
基本上,您只需在 while 循环中一次检索 1000 个文档的结果。站点地图不关心文件中结果的顺序,因此您需要按 document_id 顺序获取结果并不重要。
I've posted PHP code for this here:
http://sphinxsearch.com/forum/view.html?id=7215
basically you just retreive the results 1000 documents at a time in a while loop. sitemaps dont care about the order of results in the file, so it doesn't matter tha you need to get the results in document_id order.