何时使用sphinx搜索,何时使用普通查询?

时间:2012-05-12 11:45:33

标签: ruby-on-rails ruby-on-rails-3 sphinx thinking-sphinx

我在Rails中使用thinking_sphinx。据我所知,Sphinx用于全文搜索。假设我有这些疑问:

keyword
country
sort order

我使用Sphinx进行上述所有搜索。但是,当我在没有keyword但仅仅countrysort order的情况下进行查询时,在MySQL中使用普通查询而不是使用Sphinx会更好吗?

换句话说,只有在搜索keyword时才能使用Sphinx吗?

关注整体表现和速度。

3 个答案:

答案 0 :(得分:3)

听起来不是很讽刺,但性能真的很重要吗?

如果您正在构建一个仅供组织内少数用户使用的应用程序,那么您可能会忽略使用一种方法而不是另一种方法的性能优势,而是将注意力集中在代码中的简单性上。

另一方面,如果您的应用程序被interwebz上的大量用户访问,而您真的需要专注于提高性能,那么您应该按照上面的@barryhunter的建议和基准测试来确定在特定情况下的最佳方法。

P.S。在您需要之前不要进行优化。全力以赴地将代码从代码中删除。

答案 1 :(得分:2)

基准!基准!基准!

是的,我自己测试一下。确切的性能将取决于确切的数据,甚至可能是你的狮身人面像和mysql服务器的相对性能。

答案 2 :(得分:1)

当通过文本字符串搜索时,Sphinx将提供超过MySQL的杀手级速度,并且当使用数字键搜索时,MySQL可能会更快。

因此,假设可以使用MySQL中的数字索引对“country”和“sort order”进行索引,最好只将Sphinx用于“keyword”,而将其他两个用于MySQL正常查询。

然而,正如barryhunter建议的那样,基准测试不会受到影响;)