Probléme Index Fulltext

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Probléme Index Fulltext

Re: Probléme Index Fulltext

par spidercrash » 04 juin 2010, 12:55

merci pour votre réponse je viens de tester mais j'ai supprimé date dans la requete.

j'ai deux annonces qui ont le mot terrain et une annonce dans la description a en plus le mot viabilisé.

cependant lorsque j'exécute la requete avec en mot viabilisé terrain.
En première réponse j'obtiens la première annonce portant le mot terrain et en seconde annonce l'annonce portant les mot terrain viabilisé est ce normal ?

Escusez moi encore pour toute ces questions :oops:

Re: Probléme Index Fulltext

par mojorisin » 04 juin 2010, 09:25

Parceque je suis de bonne humeur et que c'est bientôt le week-end :)

Après il faut que vous preniez le temps de lire la documentation
SELECT

    annonces.region ,
    annonces.titreannonce ,
    annonces.descriptionannonce ,
    annonces.numannonce ,
    annonces.prix ,
    annonces.date ,

    images.miniature,
    images.id_img,
    MATCH (annonces.titreannonce,annonces.descriptionannonce)  AGAINST ('$Mot') AS score
    FROM annonces
    LEFT JOIN images
    ON images.numannonce = annonces.numannonce

    WHERE MATCH (titreannonce,descriptionannonce)  AGAINST ('$Mot')

    ORDER BY score,date

Re: Probléme Index Fulltext

par spidercrash » 03 juin 2010, 19:21

Je n'arrive pas a rassembler les deux requettes sql pourriez vous m'aider svp

merci d'avance

j'ai essayer cela mais c'est pas bon
SELECT

    annonces.region ,
    annonces.titreannonce ,
    annonces.descriptionannonce ,
    annonces.numannonce ,
    annonces.prix ,
    annonces.date ,

    images.miniature,
    images.id_img
    MATCH (titreannonce,descriptionannonce)  AGAINST ('$Mot')
    FROM annonces

    LEFT JOIN images
    ON images.numannonce = annonces.numannonce

    AS score FROM annonces WHERE MATCH (titreannonce,descriptionannonce)  AGAINST ('$Mot')

    ORDER BY DATE

Re: Probléme Index Fulltext

par mojorisin » 03 juin 2010, 08:53

Bonjour,
non la colonne score correspond à la pertinence par rapport a votre recherche. Plus le score est élevé plus les données sont pertinente.

Re: Probléme Index Fulltext

par spidercrash » 02 juin 2010, 18:41

Bonjours j'ai fait des test avec la requete précédente qui est
SELECT titreannonce,MATCH (titreannonce,descriptionannonce)  AGAINST ('$Mot') AS score FROM annonces WHERE MATCH (titreannonce,descriptionannonce)  AGAINST ('$Mot')
cela marche nikel par contre ma requete étant plus compliqué je n'arrive pas a voir comme l'adapter par rapport a la requete que tu m'a fourni
voici ma requete modifié
SELECT

    annonces.region ,
    annonces.titreannonce ,
    annonces.descriptionannonce ,
    annonces.numannonce ,
    annonces.prix ,
    annonces.date ,

    images.miniature,
    images.id_img

    FROM annonces

    LEFT JOIN images
    ON images.numannonce = annonces.numannonce

    WHERE MATCH (titreannonce,descriptionannonce)  AGAINST ('$Mot')

    ORDER BY DATE
je devrait supprimer je pense dans la requete le order by date.

Sinon la colonne score que j'obtiens lorsque j'exécute une requete sql correspond au temps de réaction de la recherche ?

merci pour ton aide

Re: Probléme Index Fulltext

par mojorisin » 02 juin 2010, 13:36

Pour le tri par pertinence en prenant votre recherche "moto sable d'olonne", les annonces ou les mots moto et sable d'olonne sont présent sortiront en premier, avant ceux ne contenant que le mot moto ou que sable d'olonne.

Avec la recherche fulltext en mode booleen vous pourrez donner plus ou moins de poids à certains mots.
Tout est expliqué dans les liens que je vous ai fourni.

Re: Probléme Index Fulltext

par spidercrash » 02 juin 2010, 12:01

merci pour votre réponse,
en faite cibler d'avantage voulé dire que si je tape moto en recherche alors toutes les annonces moto apparait, maintenant si je tape moto les sables d'olonne a se moment là j'obtiens toutes les annonces comportant les mots moto et sables d'olonne.
un ciblage serai alors idéal.
au lieu d'afficher toutes les annonces comportant c'est mots car en cherchant moto les sables d'olonne il pourrai me sortir l'annonce d'un moto se situant a paris.

l'idéal serait que si l'utilisateur précise plusieurs mots dans sa recherche a se moment là, la recherche serait plus ciblé.
Voyez vous se que je souhaite obtenir.

Quand vous dites :

Code : Tout sélectionner

Les résultat en recherche fulltext peuvent être trié par ordre de pertinence en rajoutant dans les champs sélectionnés les prédicat match et against :
Je ne comprend pas trop, cela permettrai de faire quoi exactement :( . ( double Match et double Againt )

Merci pour les liens je vais étudier le mode booleen :wink:

Re: Probléme Index Fulltext

par mojorisin » 02 juin 2010, 11:46

Qu'entendez-vous par cibler d'avantage ?

Les résultat en recherche fulltext peuvent être trié par ordre de pertinence en rajoutant dans les champs sélectionnés les prédicat match et against :
SELECT titreannonce,MATCH (titreannonce,descriptionannonce)  AGAINST ('$Mot') AS score FROM annonces WHERE MATCH (titreannonce,descriptionannonce)  AGAINST ('$Mot')
Vous pouvez également utiliser le mode booleen.

Je vous invite à lire la documentation :
Recherche fulltext
Recherche fulltext en mode booleen

Re: Probléme Index Fulltext

par spidercrash » 02 juin 2010, 10:40

ok merci pour votre aide tout s'explique alors.

une autre question me turlupine.
lorsque je lance une recherche exemple : moto les sables d'olonne.
il va m'afficher alors toutes les annonces qui comporte les mots : moto et
sables d'olonne.

y a t' il un moyen de cibler plus les recherches lors de combinaison de mots.

merci pour tout

Re: Probléme Index Fulltext

par mojorisin » 02 juin 2010, 09:01

Bonjour,
votre problème vient du fait que votre table ne contient pas assez de ligne.
Le seuil de 50% a un impact significatif lorsque vous commencez à comprendre comment fonctionne l'index : si vous créez une table et insérez une ou deux lignes, chaque mot apparaîtra dans 50% des lignes. Résultat, la recherche ne trouvera rien. Assurez-vous d'insérer au moins trois lignes, et même plus.

Re: Probléme Index Fulltext

par spidercrash » 01 juin 2010, 17:52

cela ne marche toujours pas :cry:

Re: Probléme Index Fulltext

par spidercrash » 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.

Re: Probléme Index Fulltext

par spidercrash » 31 mai 2010, 15:34

oui c'est vraiment bizarre, merci de ton aide

Re: Probléme Index Fulltext

par stealth35 » 31 mai 2010, 13:29

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

Re: Probléme Index Fulltext

par spidercrash » 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);