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



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

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

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

我能更好地浏览语言表中的每种语言以便处理吗

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

通过

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

通过

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

或者有没有一种方法可以同时处理这些并返回匹配项:

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

所以每个记录都是OR管道的一部分,并且我得到了所有匹配项的列表?这可能吗?如果可能,我在速度、cpu、ram使用方面会有所收获吗?

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

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

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


话虽如此,如果性能真的很重要,那么在Sphinx查询中使用带有OR运算符的精确搜索中提到的wordforms技巧可能会有所帮助。基本上提前做更多的工作(在索引过程中)以使查询更快(工作量更少)

最新更新