首次使用Sphinx - 配置sql_query密钥

时间:2011-11-23 20:41:02

标签: mysql sphinx

我目前正在练习使用Sphinx,除了我正在尝试做的配置之外,我已经做了很多工作。 sql_query键给我带来了一些困惑,我在Sphinx documentation of sql_query中读到了什么,但由于我在网上有很多SELECT,所以我似乎不知道该怎么做应用程序,我想使用Sphinx进行搜索,并且经常更改SQL(在用户搜索过滤时)。

在我使用MySQL进行搜索时,我想将Sphinx集成到我的Web应用程序中,如果sql_key不是可选的,我是否需要将整个搜索SQL查询放入该字段中?从表中删除必要的字段以开始重新索引?

有人能指出我正确的方向,这样我就可以顺利完成Sphinx和我的网络应用程序。

2 个答案:

答案 0 :(得分:1)

sql_query是必需的,它由sphinx运行以获取您想要从mysql索引的数据。你可以有连接,条件等,必须是一个有效的SQL查询。你应该有类似“SELECT id,field1,field2,fieldx from table”的东西。 id必须是主id。此查询返回的每一行都被视为一个文档(搜索时由sphinx返回)。 如果你有多个表(通过含义非常不同 - 用户,文章等) - 你需要为每个表创建一个索引。 从这里阅读教程:http://sphinxsearch.com/info/articles/了解狮身人面像的工作原理。

答案 1 :(得分:0)

您可以创建一个SQL查询以从数据库中获取联合记录集。如果您执行多个表连接和查询以选择最佳结果集,则也可以使用Sphinx。

您可能会遇到数据库中现有表结构的一些问题。

喜欢:

  • 基表没有整数主键字段

    创建一个包含两个字段的新表。一个用于整数id字段,另一个字段用于保存基表的主键。与该表进行内部联接并从该表中选择id字段。 例如。 SELECT t1.id, t2.name, t2.description, t2.content FROM table_new t1 INNER JOIN table_2 t2 WHERE t1.document_id = t1.thread_id INNER JOIN REST_OF_YOUR_SELECT_QUERY

    ta.id适用于Sphinx搜索引擎进行内部索引。

  • 您可以通过放置WHERE子句并过滤

    来过滤数据

    您可以根据条件动态设置过滤器,在Sphinx中执行此操作。

  • 您选择并加入不同的表格以获得结果

    这也可以通过根据您的要求设置不同的来源和索引来完成。

希望这有助于您了解需要添加和修改的内容,以便开始思考如何根据您的要求配置Sphinx搜索引擎。如果您需要更多帮助,请再次来到这里。