目前我们依靠Sphinx的PHP库来管理我们的分面搜索,这取决于使用Sphinx的多查询功能的能力。
最新的Sphinx搜索文档描述了如何通过MySQL在SphinxQL中执行相同的多查询过程。它给出了一个使用PHP的例子。
http://sphinxsearch.com/docs/manual-2.0.4.html#sphinxql-multi-queries
以这种方式支持多查询的ruby是否存在任何MySQL宝石?
我正在看mysql2 gem,这似乎是最新的东西,但似乎并不支持它。当我在ruby中进行Sphinx多查询时,我仍然感到茫然吗?
如果没有,我打算在接下来的几天内写一个支持他们的客户端,但显然SphinxQL会让这个更多更容易。我也不必让我的gem连接到两个不同的RT索引协议(只能通过SphinxQL写入)。似乎SphinxQL基本上就是它所处的位置。
答案 0 :(得分:0)
看来ruby-mysql gem支持这个:https://github.com/tmtm/ruby-mysql/blob/master/lib/mysql.rb#L406-419
我认为它正在正确处理。它表示“执行”,但实际上它似乎只是从已经执行的查询中获取下一组结果。
# execute next query if multiple queries are specified.
# === Return
# true if next query exists.
def next_result
return false unless more_results
check_connection
@fields = nil
nfields = @protocol.get_result
if nfields
@fields = @protocol.retr_fields nfields
@result_exist = true
end
return true
end
此处也有提及:http://zetcode.com/db/mysqlrubytutorial/(在“多重声明”下)
答案 1 :(得分:0)
我最终编写了自己的gem,其中包括一个围绕MySQL的小包装器。不是一个完全成熟的mysql客户端,而是一个支持SphinxQL的最小桥梁。
你可以在这里看到宝石:https://github.com/d11wtq/oedipus
此处的C扩展名为:https://github.com/d11wtq/oedipus/blob/master/ext/oedipus/oedipus.c