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