Я пытаюсь выполнить полнотекстовый поиск в трех отдельных таблицах и отсортировать результаты по релевантности. Во время поиска ответа я обнаружил, что не могу использовать полнотекстовый поиск в нескольких таблицах. Поэтому я добавил отдельный полнотекстовый индекс для каждого столбца, который я хочу найти. Теперь проблема в том, что я могу выполнять поиск, но не могу сортировать так, как хотел бы.
Вот мои столы
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, но я не планирую использовать их сейчас.
Заранее спасибо.