我正在使用 sphinx 将结果返回到自动完成列表。返回时,结果将被缓存在客户端,以避免对服务器造成不必要的命中。
逻辑如下:
- 对缓存的结果执行客户端模糊匹配算法并在自动完成中显示
- if matches.length < 4 执行 ajax 请求并使用 sphinx 获得更多结果,总共 4
- 返回结果并附加到自动完成列表
目前在 ajax 请求中,我正在发送在客户端缓存中匹配的 ID 数组,并使用 PHP 循环遍历 sphinx 的结果并将它们从匹配中删除。
这不仅效率低下,而且在正确限制结果方面当然给我带来了问题。
我想要做的是从 Sphinx 中排除这些特定的 ID 匹配自己,以便限制子句实际上是相关的。
所以问题实际上是,如何使用 PHP api 在 Sphinx 查询中排除某些 ID。例如“查找与用户名 John 的所有匹配项,除非他们具有以下任何 ID....”
我一直在阅读 sphinx 文档,并且已经阅读了大量关于“扩展模式”匹配和使用各种运算符的内容,但是我发现自己非常困惑并且不确定如何继续。
任何帮助将不胜感激。