私は、3つの別々のテーブルでフルテキスト検索を行い、関連性によって結果を並べ替えることを試みています。答えを探しているうちに、私は複数の表で全文検索を使うことができないことを知りました。だから私は検索したい各列のための別個のフルテキストインデックスを追加しました。今問題は、私は検索を行うことができますが、私はソートを行うことができないようにしたいと思います。ここで複数テーブルの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
ここでは、タイトル、著者または内容で並べ替えることができます。私がしたいのは、すべての3つの列の関連性を取得し、その結果を順序付けることです。
私はluceneやsphinxのような他の検索エンジンを知っていますが、今は使用する予定はありません。
ありがとうございます。
と全く同じことをすることができます。ありがとう。 – keune
私が助けてくれました。ありがとう! – youngcouple10
非常にいいです、私は私のプロジェクトに必要なもの! – NaturalBornCamper