フルテキスト インデックスを使用してコンテンツ (テキスト) フィールドを検索する、MySQL と PHP で構築されたカスタム CMS のコードベースを継承しました。データベース構造を分析すると、関連するすべてのテーブルが次の方法で作成されていることがわかりました (簡略化された例)。
CREATE TABLE `stories` (
`story_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`headline` varchar(255) NOT NULL DEFAULT '',
`subhead` varchar(255) DEFAULT NULL,
`content` text NOT NULL,
PRIMARY KEY (`story_id`),
FULLTEXT KEY `fulltext_search` (`headline`,`subhead`,`content`),
FULLTEXT KEY `headline` (`headline`),
FULLTEXT KEY `subhead` (`subhead`),
FULLTEXT KEY `content` (`content`)
) ENGINE=MyISAM;
ご覧のとおり、フルテキスト インデックスは通常の方法で作成されますが、各列も個別に追加されるため、2 つの異なるインデックスが作成されると思います。
以前の開発者に連絡したところ、これがフルテキスト インデックスを作成する「適切な」方法であるとのことですが、インターネットで見つけたすべての例によると、そのような要件はなく、これで十分です。
CREATE TABLE `stories` (
`story_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`headline` varchar(255) NOT NULL DEFAULT '',
`subhead` varchar(255) DEFAULT NULL,
`content` text NOT NULL,
PRIMARY KEY (`story_id`),
FULLTEXT KEY `fulltext_search` (`headline`,`subhead`,`content`)
) ENGINE=MyISAM;
テーブルには 80,000 を超える行があり、管理がますます難しくなっている (完全なデータベースは 10 GB に近い) ため、不要なデータを削除したいと考えています。
よろしくお願いします。