如何在Sphinx中连接多个索引

时间:2014-11-07 19:02:18

标签: php xml indexing sphinx

我有两个独立的实体,项目和用户彼此无关。

由于复杂的连接等,我选择使用xmlpipe2数据源而不是mysql。

我希望用户能够同时搜索用户和项目。

我的项目xml来源:

    <sphinx:document id="1">
        <title>Project 1</title>
        <details>some details bob</details>
    </sphinx:document>
    <sphinx:document id="2">
        <title>Project 2</title>
        <details>some more details bob</details>
    </sphinx:document>
    ...etc...

我的用户xml来源:

    <sphinx:document id="1">
        <name>Bob Smith</name>
        <age>16</age>
    </sphinx:document>
    <sphinx:document id="2">
        <name>Dorathy Melton</name>
        <age>22</age>
    </sphinx:document>
    ...etc...

我有两个单独的项目和用户索引

现在在我的php代码中,如何同时搜索两个索引,比如

    $s = new SphinxClient();
    $res = $s->Query('bob', "projects users");

我希望项目和用户可以进行一些匹配,但是它只搜索一个索引,因为两个索引的ID都相同。

我的备份解决方案,听起来不对 1.尝试将两组数据连接在一起并具有1个索引 2.我运行两个单独的查询

    $res = $s->Query('bob', "projects");
    $res = $s->Query('bob', "users");

1 个答案:

答案 0 :(得分:1)

你可以抵消你的孩子,所以他们不会“碰撞”,例如 项目中<sphinx:document id="200002"> 在一个索引中,和 用户<sphinx:document id="300002">。即只需为索引中的所有ID添加固定偏移量。