У меня есть две отдельные сущности, проект и пользователи, которые не связаны друг с другом.
Я решил использовать источник данных 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");
Вы можете компенсировать свои идентификаторы, чтобы они не «сговорились», например
<sphinx:document id="200002">
в проектах
в одном индексе, и
<sphinx:document id="300002">
в пользователях. т.е. просто добавьте фиксированное смещение ко всем идентификаторам в индексе.
Других решений пока нет …