Probléme Index Fulltext

Eléphant du PHP | 388 Messages

28 mai 2010, 10:29

bonjour a tous suite a un post effectué sur la partie php je dévie vers le SQL c'est pour cela que je me suis permit de reposter dans la bonne section :).

dans ma requete sql que voici
"SELECT DISTINCT COUNT(titreannonce) FROM annonces WHERE MATCH (titreannonce,descriptionannonce)  AGAINST ('$Mot')";
et ma seconde
SELECT distinct titreannonce,descriptionannonce FROM annonces
        WHERE MATCH (titreannonce,descriptionannonce)  AGAINST ('$Mot')
        ORDER by titreannonce ASC
j'utilise c'est requete pour mon moteur de recherche.
je souhaiterai faire une recherche aussi bien sur les mots utilisés dans le titre ou dans la description.
pour cela dans MATCH j'ai placer mes deux champs de ma table.
Mes deux champs sont bien en FULLTEXT.
cependant dans mysql lorsque j'éxécute une requete pour faire un test il me dit :

Code : Tout sélectionner

#1191 - Can't find FULLTEXT index matching the column list
je ne voit pas d'ou peut venir le problème si quelqu'un pourrai m'aiguiller sil vous plait , faut til que je reconstruise les index fulltext ?
exemple : REPAIR TABLE annonces QUICK;

merci pour votre aide :priere:

ViPHP
ViPHP | 5462 Messages

28 mai 2010, 10:53

fais un
SHOW INDEX FROM annonces

Eléphant du PHP | 388 Messages

28 mai 2010, 12:51

cela me donne

annonces 1 titreannonce 1 titreannonce NULL NULL NULL NULL FULLTEXT
annonces 1 descriptionannonce 1 descriptionannonce NULL NULL NULL NULL FULLTEXT

cela est bien déclarer je voit pas d'ou peut venir le problème

Eléphant du PHP | 217 Messages

28 mai 2010, 16:34

Bonjour,
pour utiliser les deux champs à la fois dans le prédicat MATCH vous devez les déclarer dans le même index :
ALTER TABLE `annonces` ADD FULLTEXT `full` (
`titreannonce` ,
`descriptionannonce`
)

Eléphant du PHP | 388 Messages

30 mai 2010, 14:50

probléme bizarre

dans ma requete lorsque j'éxécute cela
SELECT DISTINCT COUNT(titreannonce) FROM annonces WHERE MATCH (titreannonce,descriptionannonce)  AGAINST ('$Mot')
et que je remplace Mot par terrain qui est un mot bien présent dans une de mes annonces.
ceci me retourne aucun enregistrement alors que avant cela fonctionné trés bien.
du jour au lendemain plus rien.
a savoir que j'ai appeler OVH pour qu'il change le ft_min_word_len a 3 au lieu de 4.
cependant cela n'a pas était fait.

mais impossible de savoir se qui cloche mais deux champs titreannonce et descript sont bien en fulltext pas de problème.

Avait vous une idée pour que je face quoi ? merci de votre aide

Eléphant du PHP | 388 Messages

30 mai 2010, 18:07

j'ai essayer de réparer la table en faisant
REPAIR TABLE annonces QUICK;
mais toujours rien

ViPHP
ViPHP | 5462 Messages

30 mai 2010, 19:19

dans ton phpmyadmin ca marche ?

Eléphant du PHP | 388 Messages

30 mai 2010, 19:46

non justement j'ai testé par là aussi mais rien du tout cela reste toujours a zero

ViPHP
ViPHP | 5462 Messages

31 mai 2010, 00:27

non justement j'ai testé par là aussi mais rien du tout cela reste toujours a zero
ta requête MATCH ou REPAIR ?

Eléphant du PHP | 388 Messages

31 mai 2010, 08:37

La requete MATCH, me donne toujours un resultat null.
et j'ai lancer également un repair ma cela n'a rien changé

ViPHP
ViPHP | 5462 Messages

31 mai 2010, 10:09

La requete MATCH, me donne toujours un resultat null.
et j'ai lancer également un repair ma cela n'a rien changé
passe la structure de ta base, je vais tester :wink:

Eléphant du PHP | 388 Messages

31 mai 2010, 12:50

Merci pour ton aide voici la table annonces et le contenu pour que tu puisse faire un test, encore merci d'avance
CREATE TABLE IF NOT EXISTS `annonces` (
  `numannonce` int(8) NOT NULL auto_increment,
  `departement` varchar(50) NOT NULL,
  `region` varchar(50) NOT NULL,
  `categorie` varchar(50) NOT NULL default '',
  `typeannonce` varchar(50) NOT NULL default '',
  `souscategorie` varchar(50) NOT NULL default '',
  `titreannonce` varchar(50) NOT NULL default '',
  `descriptionannonce` text NOT NULL,
  `prix` varchar(50) NOT NULL default '',
  `date` datetime NOT NULL,
  `time` time NOT NULL,
  `NUMUTILISATEURS` int(8) NOT NULL,
  PRIMARY KEY  (`numannonce`),
  KEY `NUMUTILISATEURS` (`NUMUTILISATEURS`),
  FULLTEXT KEY `full` (`titreannonce`,`descriptionannonce`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=99 ;

--
-- Contenu de la table `annonces`
--

INSERT INTO `annonces` (`numannonce`, `departement`, `region`, `categorie`, `typeannonce`, `souscategorie`, `titreannonce`, `descriptionannonce`, `prix`, `date`, `time`, `NUMUTILISATEURS`) VALUES
(74, '85-Vendee', 'Pays de la Loire', 'immobilier', 'vends', 'investisseur', 'TERRAIN BORD DE MER BRETIGNOLLES SUR MER', 'VENDEE BRETIGNOLLES SUR MER-LA SAUZAIE : Terrain viabilisé, 539m2, libre de constructeur  (surface constructible 214m2)  proche mer (600 m), cale à bateaux,  dunes et pistes cyclables. \r\n\r\n5km de ST GILLES CROIX DE VIE et 25 km des SABLES D’OLONNE\r\n', '110000', '2010-05-15 16:34:30', '00:00:00', 19),
(75, '85-Vendee', 'Pays de la Loire', 'immobilier', 'vends', 'location-saisonniere', 'VENDEE BRETIGNOLLES SUR MER-LA SAUZAIE : Terrain v', 'Le Gîte CLEDESCHAN à 600m de la plage et à 200m des dunes et des pistes cyclables, se compose de 2 maisons « Fleur de Sel » et « Rose des Sables » (4 personnes chacune) entièrement rénovées, avec tout le confort, jardin et parking privés.', '350', '2010-05-15 16:41:25', '00:00:00', 20);


ViPHP
ViPHP | 5462 Messages

31 mai 2010, 13:29

bizarre ca marche pas, je vais voir ce qui cloche :(

Eléphant du PHP | 388 Messages

31 mai 2010, 15:34

oui c'est vraiment bizarre, merci de ton aide

Eléphant du PHP | 388 Messages

31 mai 2010, 18:21

Il y a de l'évolution fait comme test pour voir en recherche les mots suivant de se descriptif

Le Gîte CLEDESCHAN à 600m de la plage et à 200m des dunes et des pistes cyclables, se compose de 2 maisons « Fleur de Sel » et « Rose des Sables » (4 personnes chacune) entièrement rénovées, avec tout le confort, jardin et parking privés.

CLEDESCHAN
600m
200m
la pas de probléme cela marche maintenant
via les mot suivant

dunes
cyclables
sables
la cela ne fonctionne pas

vraiment bizarre.