Полнотекстовый mysql в нескольких таблицах

Я пытаюсь выполнить полнотекстовый поиск в трех отдельных таблицах и отсортировать результаты по релевантности. Во время поиска ответа я обнаружил, что не могу использовать полнотекстовый поиск в нескольких таблицах. Поэтому я добавил отдельный полнотекстовый индекс для каждого столбца, который хочу найти. Теперь проблема в том, что я могу выполнять поиск, но не могу выполнять сортировку, как хотелось бы.

Вот мои таблицы

CREATE TABLE books (
 bookID int(11) NOT NULL AUTO_INCREMENT,
 title varchar(300) NOT NULL,
 authorID int(11) NOT NULL,
 FULLTEXT KEY title (title)
)

CREATE TABLE IF NOT EXISTS authors (
 authorID int(11) NOT NULL AUTO_INCREMENT,
 authorNamevarchar(200) NOT NULL,
 FULLTEXT KEY authorName(authorName)
);

CREATE TABLE IF NOT EXISTS chapters (
 chapterID int(11) NOT NULL AUTO_INCREMENT,
 bookID int(11) NOT NULL,
 content longtext NOT NULL,
 FULLTEXT KEY content (content)
);

И мой запрос sql. Вот где я застрял.

SELECT *, 
 MATCH(books.title) AGAINST('$q') as tscore,
 MATCH(authors.authorName) AGAINST('$q') as ascore
 MATCH(chapters.content) AGAINST('$q') as cscore
FROM books 
LEFT JOIN authors ON books.authorID = authors.authorID 
LEFT JOIN chapters ON books.bookID = chapters.bookID 
WHERE 
 MATCH(books.title) AGAINST('$q')
 OR MATCH(authors.authorName) AGAINST('$q')
 OR MATCH(chapters.content) AGAINST('$q')
ORDER BY ???? DESC

Теперь с помощью этого запроса я могу выполнять сортировку по заголовкам, авторам или содержанию. Что я хочу сделать, так это получить релевантность для всех трех столбцов вместе и упорядочить результаты по этому.

И, да, я знаю о других поисковых системах, таких как lucene или sphinx, но я не планирую использовать их сейчас.

Заранее спасибо.

19
задан keune 19 November 2010 в 16:09
поделиться