Voir la documentation sur le support de recherche de texte intégral dans mysql:
http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html
Vous voulez appliquer des index en texte intégral à des colonnes afin de soutenir la pleine recherche de texte sur ces colonnes. Notez que mysql ne supporte que l'indexation en texte intégral sur les tables MyISAM.
À titre d'exemple, et au cas où le lien ci-dessus va mort à un moment donné, voir un exemple complet, de la documentation:
mysql> CREATE TABLE articles (
-> id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
-> title VARCHAR(200),
-> body TEXT,
-> FULLTEXT (title,body)
->);
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO articles (title,body) VALUES
-> ('MySQL Tutorial','DBMS stands for DataBase ...'),
-> ('How To Use MySQL Well','After you went through a ...'),
-> ('Optimizing MySQL','In this tutorial we will show ...'),
-> ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
-> ('MySQL vs. YourSQL','In the following database comparison ...'),
-> ('MySQL Security','When configured properly, MySQL ...');
Query OK, 6 rows affected (0.00 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM articles
-> WHERE MATCH (title,body)
-> AGAINST ('database' IN NATURAL LANGUAGE MODE);
+----+-------------------+------------------------------------------+
| id | title | body |
+----+-------------------+------------------------------------------+
| 5 | MySQL vs. YourSQL | In the following database comparison ... |
| 1 | MySQL Tutorial | DBMS stands for DataBase ... |
+----+-------------------+------------------------------------------+
Ref http://dev.mysql.com/doc/refman/5.1/en/fulltext-natural-language.html
Salut Kazar, votre réponse est ver l'information. Mais toutes mes tables sont InnoDB parce que j'utilise des contraintes d'intégrité référentielle. À quoi servirait le maintien du moteur MyISAM? Est-ce que la plupart des bases de données d'applications réelles n'auront pas le moteur InnoDB? Pourquoi y a-t-il une telle restriction? Et maintenant dois-je supprimer toutes les constantes d'intégrité référentielle de toutes mes tables pour le faire fonctionner avec la recherche en texte intégral? – TCM
@Nitesh: 'InnoDB' est un moteur transactionnel avec une concurrence par verrous. Un support d'index pour un tel moteur serait une tâche assez difficile, car il aurait besoin d'être intégré dans la gestion des transactions, et 'InnoDB' n'a pas de support interne pour les index non btree. – Quassnoi
Ok, j'ai vu un lien sur stackoverflow lui-même: -http: //stackoverflow.com/questions/2638698/mysql-full-text-search-workaround-for-innodb-tables qui demande de créer des tables temporaires et de les supprimer ce qui serait très coûteux à créer et à supprimer à chaque opération de recherche. Au lieu de cela je vais répliquer mes quelques tables sur lesquelles je veux que la recherche en texte intégral soit faite. En passant, je n'ai jamais sélectionné de type de moteur dans Sql Server 2005 et il supportait toujours l'intégrité référentielle et même la recherche en texte intégral Sql. En fait, la recherche en texte intégral est prise en charge depuis SQL Server 2000 et il s'est amélioré en 2005 – TCM