[SQL] recherche textes similaires

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics

lesbonsplansdesophie
WRInaute passionné
WRInaute passionné
 
Messages: 518
Inscription: Lun Mar 01, 2004 10:04

[SQL] recherche textes similaires

Message le Mer Mai 25, 2005 15:11

Bonjour,

Quelqun connait une fonction qui permet de rechercher des champs texte similaires dans une base SQL ?

Plus clairement, imaginons que j'ai une table avec un champ "MOT" et que celle-ci contient:
voiture
voiturette
maison
chien

une requete du style "SELECT MOT FROM TBL WHERE MOT 'resssemble a' voiture", qui me renverrait voiture et voiturette ?

Je sais qu'en php il existe des fonctions d'anlyse de similarite (similar-text, levenshtein etc.) et je voudrais savoir si il existe une fonction pour le faire directement en SQL...

Merci de votre aide !


Phobos
WRInaute passionné
WRInaute passionné
 
Messages: 937
Inscription: Dim Mar 21, 2004 16:36

Message le Mer Mai 25, 2005 15:22

Salut,
Code: Tout sélectionner
SELECT mot FROM tbl WHERE mot LIKE '%voiture%'

te renverras les résultats contenant mot motion émotion moteur motricité etc ;)

lesbonsplansdesophie
WRInaute passionné
WRInaute passionné
 
Messages: 518
Inscription: Lun Mar 01, 2004 10:04

Message le Mer Mai 25, 2005 15:26

Merci, malheureusement je n'ai pas ete assez explicite et mon exemple etait trop simple :?

En fait je cherche une fonction capable de savoir que
"Le chien jaune court dans la prairie le matin et tout les francais sont contents et sautent de joie"
est tres proche de
"Un chien jaune court dans la prairie et tous les francais sont content"

(pardonnez moi l'exemple bidon mais j'ai un mal de crane pas possible)

En php avec similar_text ou levhenstein c'est facile, en sql je me demandais si il y avait une fonction toute faite ?

sgaze
WRInaute passionné
WRInaute passionné
 
Messages: 538
Inscription: Lun Fév 02, 2004 16:54

Message le Mer Mai 25, 2005 15:36

Phobos a écrit:Salut,
Code: Tout sélectionner
SELECT mot FROM tbl WHERE mot LIKE '%voiture%'

te renverras les résultats contenant mot motion émotion moteur motricité etc ;)


euh là tu t'es gouré. "mot" c'est le nom du champ, pas son contenu.
Ca va renvoyer voitures, voiturettes, totovoiture mais pas moteur !

lesbonsplansdesophie
WRInaute passionné
WRInaute passionné
 
Messages: 518
Inscription: Lun Mar 01, 2004 10:04

Message le Mer Mai 25, 2005 15:38

Oui je pense que Phobos a fait un lapsus, mais pour en revenir a ma question personne n'a d'idee ?


Phobos
WRInaute passionné
WRInaute passionné
 
Messages: 937
Inscription: Dim Mar 21, 2004 16:36

Message le Mer Mai 25, 2005 15:42

oui effectivement, j'ai lapsé :lol:
désolé mais je ne vois pas quelle syntaxe permettrait cela, tu peux utiliser les expressions régulières dans la recherche mais ça ne suffit pas pour faire ce que tu veux, après recherche, il y a similar mais ce doit être pareil que like :(

lesbonsplansdesophie
WRInaute passionné
WRInaute passionné
 
Messages: 518
Inscription: Lun Mar 01, 2004 10:04

Message le Mer Mai 25, 2005 15:46

Bon pour ceux que ca interesse je crois avoir trouve la solution...
Ca s'appelle du "full search" et il y a un tres bon tutoriel ici:

http://www.phpfreaks.com/tutorials/129/0.php

A+

webmister62
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 143
Inscription: Jeu Fév 10, 2005 16:19

Message le Mer Mai 25, 2005 15:57

l'algorythme de Levenshtein peut aussi t'aider.
cf la doc php : http://fr.php.net/manual/fr/function.levenshtein.php

lesbonsplansdesophie
WRInaute passionné
WRInaute passionné
 
Messages: 518
Inscription: Lun Mar 01, 2004 10:04

Message le Mer Mai 25, 2005 15:59

Non, car comme je le disais plus haut je cherchais exactement l'equivalent de cet algorithme, mais en SQL. Et ca existe, c'est le fameux full search dont je parle dans mon dernier post :lol:

Merci quand meme :wink:

webmister62
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 143
Inscription: Jeu Fév 10, 2005 16:19

Message le Mer Mai 25, 2005 16:24

lol ah oui c'est vrai sorry... la fatigue :lol:

herve01
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 124
Inscription: Mer Mar 03, 2004 20:54

Message le Mer Mai 25, 2005 17:28

J'ai testé le FULLTEXT ça fonctionne parfaitement (avec les tables de types MyISAM uniquement, donc adieu InnoDB et les clés étrangères).

Il faut voir aussi la clause WITH QUERY EXPANSION, très puissante.


Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google Présentations

  • Recherche de citations d'un site en texte brut
    Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).
  • Détection de pages similaires
    Cet outil vous permet de calculer la similarité entre 2 pages web. L'algorithme utilisé repose sur l'analyse des occurrences des mots (mais pas sur leur positionnement dans les pages). Google utilise cette notion à certains endroits dans son algorithme, mais de façon bien plus évoluée que ce petit outil... Avoir des pages trop similaires peut entraîner des problèmes d'indexation... Cet outil vous permettra peut-être de résoudre certains problèmes de contenus dupliqués.
  • Touch Graph Google Browser
    Description du TouchGraph Google Browser (outil externe) : il s'agit d'un outil graphique permettant de visualiser des sites similaires (selon Google). On peut sauter de site en site, et se rendre compte facilement des communautés de sites, ou des nébuleuses de sites traitant du même sujet.
  • Analyser le positionnement d'un site
    AgentWebRanking est un logiciel professionnel qui permet d'analyser le positionnement d'un ou plusieurs sites dans plus de 300 moteurs de recherche dans le monde. Vous pouvez ainsi analyser les performances du référencement pour de nombreux mots-clés.


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités