Faire une recherche par mot clé dans un texte

Signaler
Messages postés
21
Date d'inscription
mardi 13 novembre 2012
Statut
Membre
Dernière intervention
13 novembre 2012
-
J_G
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
-
Bonjour,



J'ai des docs en
registrés dans ma BDD, j'aimerais faire des récherches par mots clés
sur ces docs enfin de n'en afficher que les docs qui contiennent les
mots clé (comme à la google sauf que les expressions que je pourrais
saisir peuvent être beaucoup plus compliquées que ce qui propose google).



Alors j'aimerais connaitre votre reflexion ...


Et si vous connaissez des fonctions php qui me permettent de faire ce
traitement ou si un code existe dèja qui permet de faire ça ...



Toutes les idées seront les bienvenues..



PS: cette question je l'ai dèja posé mais elle n'était pas dans le bon forum ...

24 réponses

Messages postés
3
Date d'inscription
jeudi 18 mars 2004
Statut
Membre
Dernière intervention
7 décembre 2005

Si j'ai stocké les document word pdf ou excel dans la base de données et pas dans l'url (comme je fais d'habitude), c'était pour créer un moteur de recherche. Apres moult recherche, j'en suis arrivé à la conclusion que l'on ne pouvait pas avec du php convertir un format word ou pdf au format texte... ce qui est bien dommage.
la seule solution qui existe est de transformer les fichier pdf, word ou excel grace à un programme extérieur executable en ligne de commande et de l'insérer dans son script php. (word: catdoc.exe, pdf: pdftotext.exe, excel: xlhtml.exe, powerpoint: ppthtml.exe)
Ah ben J_G, je viens de lire ton message. Tu as répondu juste au moment ou je répondais.
Donc voila, J_G confirme. Moi je le fait tourner sous Windows. Cahier des charges oblige.
Au faite, je n'avais jamais stocker mes pdf dans une bd avant. Maintenant, je le ferais tout le temps: meilleur rapidité d'execution (à mon sens, je peux me tromper), plus de problème de nom de fichier en double.
Je suis fier d'avoir utiliser "moult", c'est comme un subjonctif de l'imparfait... c'est pas facile à caser...
Messages postés
21
Date d'inscription
mardi 13 novembre 2012
Statut
Membre
Dernière intervention
13 novembre 2012

Bonjour à tous,

J'ai testé l'indexation fulltext(en utilisant l'option mode boolean) , et ca marche bien avec tous les textes en langue occidentale, par contre quand j'ai essayé de chercher dans un texte d'autres langues (arabes au chinoises, ...) ca n'a pas marché ...

est ce que vous avez une idée sur ce problème ...

Merci d'avance
Messages postés
3
Date d'inscription
jeudi 18 mars 2004
Statut
Membre
Dernière intervention
7 décembre 2005

Alors là, je ne serais pas quoi te répondre... désolé.
J'ai un autre souci. La recherche FULLTEXT permet d'obtenir un degrée de pertinence pour une recherche. Chose que je trouve trés pratique. Le seul truc c'est qu'il n'affiche pas les textes qui ont un degrés de pertinence égale à 1. Ce qui est plutôt embétant.
Est ce que pour faire un bon moteur de recherche, je dois rechercher avec le mode boolean et apres chercher avec la pertinence?

(Rappel: Le mode boolean permet d'afficher l'ensemble des lignes contenant le mot recherché)

Merci pour vos réponses.
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
6
Salut,



Moi j'ai même rencontrer un problème plus galère avec les FullText :

MySQL 3.23 => pas de recherche en mode Booléen !



Et "match(titre,texte) against ('art')" ne trouvera pas "artiste" !!! Ce qui est stupide... (Et bien sûr je n'ai pas le choix de la version de MySQL)





donc, pour moi, la bonne façon de l'utiliser est ainsi :



select t.*, match(t.titre,t.texte) against ('art') as score

from table as t

where t.titre like '%art%' or t.text like '%art%'

order by score desc, t.titre asc, t.text asc;



ainsi, les résultats contenant le mot "art" seront plassés en tête. Et
ceux contenant les dérivé de "art" ensuite (artisite, artisant, tarte,
...)



Le problème :

Du coup, on garde la lourdeur des like...

C'est-à-dire pour M mots et N champs de recherche on aura M*N conditions dans la requète...





Voilà ma solution.

A+
1 2