Как объединить несколько индексов в Sphinx

У меня есть две отдельные сущности, проект и пользователи, которые не связаны друг с другом.

Я решил использовать источник данных xmlpipe2, а не mysql из-за сложных объединений и т. Д.

Мне бы хотелось, чтобы пользователь мог одновременно просматривать пользователей и проекты.

Мой проект xml source:

    <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");

0

Решение

Вы можете компенсировать свои идентификаторы, чтобы они не «сговорились», например
<sphinx:document id="200002"> в проектах
в одном индексе, и
<sphinx:document id="300002"> в пользователях. т.е. просто добавьте фиксированное смещение ко всем идентификаторам в индексе.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]