Крот
Новичок
Поиск через Sphinx; книги, тэги, авторы.
Осваиваю потихоньку сфинкс, интересует следующий вопрос.
Мне хочется через один запрос к сфинксу искать сразу информацию по книгам, тэгам, авторам.
Я делаю несколько сорсов а-ля
[SQL]
SELECT books.book_id as id, books.title, books.description, tags.tag_title, "" author_title FROM books, tags, books2tags WHERE books2tags.book_id = books.book_id AND tags.tag_id = books2tags.tag_id
[/SQL]
[SQL]
SELECT books.book_id as id, books.title, books.description, "" as tag_title, authors.author_title[/B] FROM books, authors, books2authors WHERE books2authors.book_id = books.book_id AND authors.author_id = books2authors.author_id
[/SQL]
После этого, я пихаю все эти сорцы в единый индекс.
Разумеется, в этом индексе получаются дубликаты ключей, т.к. строчек с одним и тем же book_id получается очень много (об этом нам сообщает даже indexer при индексации). Но при поиске дубликаты ключей не мешают, т.к. сфинкс как-бы объединяет все строки с одним и тем же book_id...
Это нормально? Или есть какой-то другой путь?
PS: Сперва я хотел вынести тэги, авторов и т.д. в multi value attribute (MVA), но потом понял, что мне вместо одного запроса придется делать несколько (в индекс с тэгами, авторами и т.д.) и решил так не делать, т.к. непонятно как потом эти разные(по-сути) результаты "релевантно объединить".
Такие дела...
Осваиваю потихоньку сфинкс, интересует следующий вопрос.
Мне хочется через один запрос к сфинксу искать сразу информацию по книгам, тэгам, авторам.
Я делаю несколько сорсов а-ля
[SQL]
SELECT books.book_id as id, books.title, books.description, tags.tag_title, "" author_title FROM books, tags, books2tags WHERE books2tags.book_id = books.book_id AND tags.tag_id = books2tags.tag_id
[/SQL]
[SQL]
SELECT books.book_id as id, books.title, books.description, "" as tag_title, authors.author_title[/B] FROM books, authors, books2authors WHERE books2authors.book_id = books.book_id AND authors.author_id = books2authors.author_id
[/SQL]
После этого, я пихаю все эти сорцы в единый индекс.
Разумеется, в этом индексе получаются дубликаты ключей, т.к. строчек с одним и тем же book_id получается очень много (об этом нам сообщает даже indexer при индексации). Но при поиске дубликаты ключей не мешают, т.к. сфинкс как-бы объединяет все строки с одним и тем же book_id...
Это нормально? Или есть какой-то другой путь?
PS: Сперва я хотел вынести тэги, авторов и т.д. в multi value attribute (MVA), но потом понял, что мне вместо одного запроса придется делать несколько (в индекс с тэгами, авторами и т.д.) и решил так не делать, т.к. непонятно как потом эти разные(по-сути) результаты "релевантно объединить".
Такие дела...