2014-11-07 3 views
0

У меня есть два отдельных объекта, проект и пользователи, которые не связаны друг с другом.Как присоединиться к нескольким индексам в Sphinx

Я использую 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"); 

Я бы ожидал некоторых совпадений с проектом и пользователями, однако он ищет только один индекс, так как идентификаторы одинаковы для обоих индексов.

Моих резервные копий решений, которые не звучат правильно 1. Попробовать объединения двух наборов данных вместе и с 1 индексом 2. Я бег два отдельных запросов

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

ответ

1

Вы можете компенсировать ваши идентификаторы, так они не 'colide', например <sphinx:document id="200002"> в проектах с одним индексом, и <sphinx:document id="300002"> у пользователей. т.е. просто добавьте фиксированное смещение ко всем идентификаторам в индексе.

Смежные вопросы