複数のテーブルがあり、列が異なるため、それに応じてフルテキストインデックスが設定されます。スコアは関連性によってデータをソートするため、1つのテーブルのみを検索する場合は問題ありません。ただし、複数のテーブルがありUNION
、これらのSQLSELECT
ステートメントには次のように使用します。
$this->dbi->prepare("
SELECT `id`,'".PRE."pages' as `table`, MATCH(`title`,`content`) AGAINST (?) AS `score` FROM `".PRE."pages` WHERE MATCH(`title`,`content`) AGAINST (?)
UNION SELECT `id`,'".PRE."news' as `table`, MATCH(`title`,`content`) AGAINST (?) AS `score` FROM `".PRE."news` WHERE MATCH(`title`,`content`) AGAINST (?)
UNION SELECT `id`,'".PRE."comments' as `table`, MATCH(`title`, `content`) AGAINST (?) AS `score` FROM `".PRE."comments` WHERE MATCH(`title`, `content`) AGAINST(?)
UNION SELECT `id`,'".PRE."auction_auto' as `table`, MATCH(`manufacturer`,`model`,`location`,`other`,`contact`) AGAINST (?) AS `score` FROM `".PRE."auction_auto` WHERE MATCH(`manufacturer`,`model`,`location`,`other`,`contact`) AGAINST (?)
;")->...
これらの多くのテーブルにどのように関連性を持たせることができますか?これで、スコアに関係なく、選択したテーブルの順序に従ってデータが表示されます。
ありがとう。