Recherche full-texte

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par sigma2008, 31 Janvier 2015.

  1. sigma2008
    sigma2008 WRInaute impliqué
    Inscrit:
    18 Juin 2008
    Messages:
    753
    J'aime reçus:
    4
    Bonjour,
    Je suis en train d'appliquer ce tutoriel : http://omiossec.developpez.com/mysql/fulltext/etudes/

    J'ai donc créé mon code :

    Code:
    SELECT id, MATCH (titre, description , date) AGAINST ('comment créer un texte') AS  cpt
    FROM article
    ORDER BY cpt DESC
    
    Ma table article contient : id | titre | description | date

    mais ça marche pas ça m'affiche : Can't find FULLTEXT index matching the column list

    Il faut apparemment que je créé un autre champ dans ma table genre d'après le tutoriel quand il a créé la table il a mis : FULLTEXT INDEX example_fulltext_plein(texte, commentaire, titre),

    Ce que j'ai pas moi dans ma table !! Comment faire svp ?
     
  2. sigma2008
    sigma2008 WRInaute impliqué
    Inscrit:
    18 Juin 2008
    Messages:
    753
    J'aime reçus:
    4
  3. sigma2008
    sigma2008 WRInaute impliqué
    Inscrit:
    18 Juin 2008
    Messages:
    753
    J'aime reçus:
    4
  4. p0k3
    p0k3 WRInaute occasionnel
    Inscrit:
    2 Juin 2010
    Messages:
    315
    J'aime reçus:
    0
    Requête SQL a exécuter :

    ALTER TABLE article ADD FULLTEXT(titre, description , date);

    En passant, la table "article" devrait être au pluriel puisqu'elle contient plusieurs articles (c'est une bonne pratique !)
     
  5. sigma2008
    sigma2008 WRInaute impliqué
    Inscrit:
    18 Juin 2008
    Messages:
    753
    J'aime reçus:
    4
    Bonjour pOk3 merci pour votre réponse, d'accord pour le articles x).
    A propos, quand j'exécute la requête alter Table, ceci va me créer un nouveau champs qui contient quoi ?
    Et je dois exécuter cette requête chaque fois qu'un article est ajouté dans cette table ?

    Merci.
     
  6. p0k3
    p0k3 WRInaute occasionnel
    Inscrit:
    2 Juin 2010
    Messages:
    315
    J'aime reçus:
    0
    ça ne créé pas de nouveau champs, ça créé un index sur les champs listés !

    La requête est exécutée une fois pour toute !
     
  7. sigma2008
    sigma2008 WRInaute impliqué
    Inscrit:
    18 Juin 2008
    Messages:
    753
    J'aime reçus:
    4
    Et on peut voir cet index une fois créé dans la bdd via phpmyadmin ?
     
  8. noren
    noren WRInaute accro
    Inscrit:
    8 Avril 2011
    Messages:
    2 903
    J'aime reçus:
    14
    oui ca sera un index comme les autres. Par contre il faut savoir que les index fulltext sont très lourd.

    Petite question tu es sur quelle base de données? mysql? tu utilise quel moteur : myisam ou innodb?
    le fulltext est fonctionnel avec innodb uniqument sur mysql 5.6 il me semble. Donc si tu fais des essais en local fait bien attention qu'ensuite chez ton hébergeur le fulltext sera fonctionnel

    Et si tu utilises le moteur myisam, il faut savoir que mysql a rendu innodb comme le moteur par defaut et que myisam n’est plus vraiment MAJ. l'avenir est donc à l'innodb depuis la reprise de mysql par oracle
     
  9. sigma2008
    sigma2008 WRInaute impliqué
    Inscrit:
    18 Juin 2008
    Messages:
    753
    J'aime reçus:
    4
    Bonjour, oui je suis sous mysql (wamp) le moteur aucune idée j'ai posté mon code en haut !
     
  10. concombre
    concombre Nouveau WRInaute
    Inscrit:
    14 Juillet 2014
    Messages:
    41
    J'aime reçus:
    0
    Salut,
    Pour connaitre simplement la version de MySQL regarde sur PhpMyAdmin -> Variables -> Version.

    Je te conseille d'utiliser "HeidiSQL" c'est un peu plus pratique que PhpMyAdmin et tu verras tes Index.
     
  11. noren
    noren WRInaute accro
    Inscrit:
    8 Avril 2011
    Messages:
    2 903
    J'aime reçus:
    14
    Alors il faudrait que tu t'en soucis maintenant, car si tu test actuellement sur mysql 5.6 et que tu utilises le moteur innodb ça peut fonctionner en local mais si jamais tu as chez ton hébergeur une autre version ça ne fonctionnera plus et tu devras passer en myisam ou oublier ta recherche fulltext

    Le choix du moteur est important pour le développement de ton projet. De mon côté j'ai abandonné la recherche full text, car je souhaitais utiliser le moteur innodb (nouveau moteur par défaut de mysql et plus pro) et ovh ne propose pas sur ses offres mutualisés mysql 5.6, même avec un SQL privé.

    Donc avant de te lancer dans le fulltext faut déjà voir si tu seras en mesure de t'en servir.

    PS : ton code plus haut ne donne aucune information sur le moteur que tu utilises
     
  12. sigma2008
    sigma2008 WRInaute impliqué
    Inscrit:
    18 Juin 2008
    Messages:
    753
    J'aime reçus:
    4
    Merci beaucoup pour votre aide, quand j'ai lu "ou tu oublie la recherche fulltext" je me demande s'il y a une alternative ? par exemple chercher mot par mot dans la bdd quand l'utilisateur fait entrer une phrase !
     
  13. noren
    noren WRInaute accro
    Inscrit:
    8 Avril 2011
    Messages:
    2 903
    J'aime reçus:
    14
    Pour le moment n'envisageant pas plus de quelques milliers d'articles, pour ma part je vais me contenter d'un "like" , le temps d'être ensuite correctement référencé pour passer ensuite par le moteur de recherche fourni par GG.

    Sur mutualisé, je n'ai malheureusement pas trouvé d'alternative, il me semble que pour utiliser les moteurs lucène, zend lucène , sphinx etc. il faut avoir un dédié. Ca nécessite une installation, (A confirmer)
    Par contre je ne sais pas si c’est également le cas pour elasticsearch
     
  14. sigma2008
    sigma2008 WRInaute impliqué
    Inscrit:
    18 Juin 2008
    Messages:
    753
    J'aime reçus:
    4
    Oui noren, je souhaite aussi utiliser le like que je maitrise bien, mais mon problème c'est avec les mots, comment vous faites par exemple si le client cherche "Histoire du film Segnieur des anneaux" alors que dans ma table j'ai seulement le mot segnieur dans le champ "titre" de la ligne id=20. si on utilise like il va chercher exactement la phrase "Histoire du film Segnieur des anneaux" et il va afficher le vide !
     
  15. concombre
    concombre Nouveau WRInaute
    Inscrit:
    14 Juillet 2014
    Messages:
    41
    J'aime reçus:
    0
    Salut,
    Il va falloir que tu fasses des "like" multiples en splitant ta chaine d'entrée. Pas top pour classer tes résultats et couteux en perfs. Si tes autres pages sont en cache et que le moteur n'est pas le centre de fonctionnement de ton site pourquoi pas.


    Le moteur MyIsam n'évolue plus, mais il est stable. Si tu n'utilises pas le transactionnel et les autres fonctions apportées par InnoDB, tu peux toujours utiliser MyIsam. C'est juste un choix technologique ;)

    Au pire tu peux mettre en place un système de Tags sur tes articles et te contenter de faire la recherche dessus.
     
  16. noren
    noren WRInaute accro
    Inscrit:
    8 Avril 2011
    Messages:
    2 903
    J'aime reçus:
    14
    Oui voilà il faut spliter la chaine

    Après ce qui m'a dérangé avec le fulltext c’est que ca grossit fortement ta table et tes index.
    sachant également que même si elle est nettement plus efficace que la recherche avec les like elle reste moins performante que d'autres moteurs de type sphynx, lucène cité plus haut.

    Après comme le dit concombre, si ton moteur de recherche n'est pas le centre de ton site, et en fonction du nombre d'articles sur celui-ci le like peu faire l'affaire, le temps éventuellement que tu passes un jour sur un dédié par exemple ou que les serveurs mutualisés mettent à jour la versuion du Mysql. Ou tu peux aussi te contenter du Myisam. Mais pour ma part je n'aime pas trop l'idée pour un nouveau projet de partir avec un moteur qui sera enfin de compte "mis de côté". Et si un jour tu sens le besoin de faire des transactions ou de gérer les clés étrangères et les contraintes d'intégrité tu devras passer en innodb.
    innodb verrouille également la ligne et non la table dans certain cas c’est plus performant. Notamment si ton site a beaucoup de visiteurs et que tu fais pas mal d'insert et d'update. Tu auras un gain de performance. Sachant également qu'innodb continue d'évoluer.
     
Chargement...
Similar Threads - Recherche full Forum Date
Recherche fulltext mot féminin et pluriel ? Développement d'un site Web ou d'une appli mobile 18 Mars 2011
Recherches en FULLTEXT ? Développement d'un site Web ou d'une appli mobile 11 Octobre 2010
Recherche sites pénalisés par penguin Netlinking, backlinks, liens et redirections Lundi à 18:33
La recherche vocale ne se résume pas aux assistants vocaux ! Référencement Google 27 Novembre 2019
Mais où sont passés les vrais résultats de recherche ? Référencement Google 24 Novembre 2019
Désindexer page du moteur de recherche interne Crawl et indexation Google, sitemaps 30 Octobre 2019
Aucune information relative à la page dans les résultats de recherche Demandes d'avis et de conseils sur vos sites 11 Octobre 2019
Comment ce spam en recherche locale est-il possible ? Netlinking, backlinks, liens et redirections 9 Octobre 2019
Nouvelle présentatation des résultats du moteur de recherche google Référencement Google 5 Octobre 2019
Référencement local : comment apparaître sur une recherche Google YouTube, Google Images et Google Maps 28 Septembre 2019
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice