Trouver la meilleur concordance à une requête

Eléphant du PHP | 51 Messages

14 déc. 2010, 16:58

Bonjour je suis à la recherche de documentation et de toute aide pour réaliser un projet qui serai de pouvoir soumettre via un query une phrase "mr dupon a une voiture" et de demander à la base de donnée de me rendre la réponse qui correspond le mieux à cette recherche.

Il y aurait beaucoup de réponses mais je souhaiterai récupérer celle qui correspond au maxium de mot cléf.

J'avais pensé à réaliser un score de concordance et à prendre la phrase qui a le meilleur score qu'en pensez vous ?
Existe t il du code qui va dans ce sens ?
Cordialement

devlop78
Invité n'ayant pas de compte PHPfrance

15 déc. 2010, 01:25

Quel est le schéma de ta base de données ? As-tu une modélisation ?

Eléphant du PHP | 51 Messages

15 déc. 2010, 06:46

Non en fait j'attends de savoir comme je concrétise ce fichu script pour savoir comment débuter ma BDD qui est en brut sous excel pour l'instant.
Je pensais à une colonne avec la question type contenant les mots clef et à côté la réponse que je souhaite donner si la question ou une question ayant un nombre suffisant de mot clef pour être considéré comme valable est sélectionnée.

Ou alors je divise ma question en autant de colones que j'ai de mot clef pour faciliter la recherche.

Merci de ton aide

Eléphant du PHP | 209 Messages

15 déc. 2010, 06:55

Ca c'est compliqué comme sujet ...

Si tu veux quelque chose d'assez bien penser, il faut peut être voir du coté de Zend_Lucene

Sinon, il va falloir :
- transformer la phrase en token (mr,dupon,a,une,voiture)
- enlever les stops words (mr,a,une,..)
- leximiser les mots qui reste (stemming) (voiture == voitures)
- chercher dans l'index
- éventuellement associer un poids au mot trouvé

Et dans ce cas, tu auras quelque choses qui fonctionne, quoiqu'un peu bancale...
--
Eric

ViPHP
ViPHP | 3607 Messages

15 déc. 2010, 10:35

Tu peux regarder aussi du côté de soundex, levensthein et autres algorithmes de comparaisons de chaines...
Le problème c'est qu'a priori il n'y a rien de natif sous mysql par exemple...
Il faut compiler des extensions: http://dev.mysql.com/doc/refman/5.0/en/ ... iling.html