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

0

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

Я использую 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");
Теги:
indexing
sphinx

1 ответ

1
Лучший ответ

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню