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