在 table 中匹配记录时优化 Sphinx 查询

Optimizing Sphinx Query when matching records in a table

如果我试图在索引的 Sphinx 文本 field/table 中查找关键字的所有匹配项,有没有一种方法可以将所有记录一次加载到查询中,而不是一次加载一个?

换句话说,如果我有这样的查询

(Enjoy | Like | Love) << ($Language) << (Cuisine | Food | Dining)

在语言 table 中单步执行每种语言是否会更好,以便我处理

(Enjoy | Like | Love) << Albanian << (Cuisine | Food | Dining)

(Enjoy | Like | Love) << Mexican  << (Cuisine | Food | Dining)

(Enjoy | Like | Love) << Zimbabwean << (Cuisine | Food | Dining)

或者有没有办法一次处理所有这些并且 return 匹配:

(Enjoy | Like | Love) << (Albanian | ... | Mexican | ... | Zimbabwean) << (Cuisine | Food | Dining)

这样每条记录都是 OR 管道的一部分并且我得到所有匹配项的列表?这可能吗?如果是的话,我在速度、cpu、内存使用方面有什么收获吗?

真的,性能问题只能通过基准测试来回答。对性能的最大影响通常非常微妙

例如,在您的情况下,每种语言的结果数量可能是最大的因素。如果每个结果很少,那么第二个更好(避免 运行 大量没有结果的查询)——但如果大多数语言都有很多结果,那么可能没什么不同。

但这就是我猜测的观点。可能完全错了!


话虽如此,如果性能真的很重要,那么 中提到的字形技巧可能会有所帮助。基本上预先(在索引期间)做更多的工作以使查询更快(更少的工作)