MySQL MATCH GEGEN nicht funktioniert

Bin ich tatsächlich arbeiten auf einer website, wo gibt es zwei Tabellen, die fast identisch, wo die Partie GEGEN Werke auf der einen, aber nicht auf der anderen. Finden Sie heraus, warum ich versucht habe, um dies zu reduzieren auf eine einfache, "Lassen Sie uns machen Sie eine einfache Tabelle arbeiten" - aber es funktioniert nicht.

Mache ich Tests mit phpMyAdmin-und das ist MySQL 5.1.41.

Test habe ich bauen verwendet die folgenden zu definieren... in der Tabelle

CREATE TABLE IF NOT EXISTS `test` (
  `id` int(11) NOT NULL,
  `title` text NOT NULL,
  `body` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

ALTER TABLE `test` ADD FULLTEXT (`title`, `body`);

und wenn ich eine SHOW INDEX FROM test sehe ich, dass es ein FULLTEXT-Schlüssel, bestehend aus Titel und body.

Füge ich ein paar Zeilen mit

INSERT INTO `test` (`id`, `title`, `body`) VALUES 
('1', 'Lorem Ipsum', 'Lorem ipsum dolor sit amet, consectetur ... lacus porta euismod.'), 
('2', 'Lorem Ipsum (cont)', 'Nunc leo massa, vulputate ... euismod fringilla.');

(einige Körper Inhalt aus Gründen der Kürze entfernt)

und wenn ich dann laufen

SELECT * FROM `test` WHERE MATCH (`title`, `body`) AGAINST ('consectetur');

Bekomme ich ein leeres ResultSet - keine Zeilen gefunden, aber wenn ich

SELECT * FROM `test` WHERE `body` LIKE '%consectetur%';

dann ein Datensatz gefunden wird.

Obwohl ich habe eine Menge Erfahrung mit MySQL ist dies das erste mal, das ich verwendet habe, PASSEN so mache ich etwas bescheuert? Warum dieses nicht funktioniert? Hat der index erstellt werden müssen (ich habe eine REPARATUR auf dem Tisch) oder ist das ganze soll automatisch passieren?

Nur für Informationen, die Tabelle, die funktioniert, ist definiert mit

CREATE TABLE IF NOT EXISTS `web_pages1` (
  `id` int(11) NOT NULL,
  `title` varchar(255) DEFAULT NULL,
  `slug` varchar(255) DEFAULT NULL,
  `meta_keywords` text,
  `meta_description` text,
  `snippet` text,
  `body` mediumtext,
  `created_by` int(11) DEFAULT NULL,
  `date_created` datetime DEFAULT NULL,
  `date_published` date DEFAULT NULL,
  `author` varchar(255) DEFAULT NULL,
  `edited_by` int(11) DEFAULT NULL,
  `date_edited` datetime DEFAULT NULL,
  `status` tinyint(4) NOT NULL DEFAULT '1',
  `parent_id` tinyint(11) DEFAULT NULL,
  `menu_id` int(11) DEFAULT NULL,
  `short_name` varchar(255) DEFAULT NULL,
  `sort_order` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  FULLTEXT KEY `search` (`title`,`slug`,`meta_keywords`,`meta_description`,`snippet`,`body`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

... und die eine, die verursacht mir Probleme und schickte mich für diesen Weg ist

CREATE TABLE IF NOT EXISTS `web_news1` (
  `id` int(11) NOT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `meta_keywords` text,
  `meta_description` text,
  `snippet` text NOT NULL,
  `body` text NOT NULL,
  `created_by` int(11) NOT NULL,
  `date_created` datetime NOT NULL,
  `date_published` date DEFAULT NULL,
  `author` varchar(255) DEFAULT NULL,
  `edited_by` int(11) DEFAULT NULL,
  `date_edited` datetime DEFAULT NULL,
  `status` tinyint(4) DEFAULT '0',
  PRIMARY KEY (`id`),
  FULLTEXT KEY `search` (`title`,`slug`,`meta_keywords`,`meta_description`,`snippet`,`body`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Obwohl ich versucht habe, definieren die zweite genau wie die erste und immer noch funktioniert es nicht.

InformationsquelleAutor Ken | 2013-02-08
Schreibe einen Kommentar