匹配表中的记录时优化Sphinx Query

时间:2015-12-04 01:08:32

标签: 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使用方面获得了什么?

1 个答案:

答案 0 :(得分:0)

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

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

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

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