Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1390 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  Rechercher l'existance de chaînes dans une BD

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Rechercher l'existance de chaînes dans une BD

n°2023130
rufo
Pas me confondre avec Lycos!
Posté le 15-09-2010 à 17:47:16  profilanswer
 

Voilà, je cherche un algo plus optimisé (s'il existe) que celui que j'ai mis oeuvre actuellement. Pour résumer, j'ai une page web avec un texte (plus ou moins long) et je veux vérifier s'il n'existe pas dans une BD (Mediawiki) un article portant le même nom (titre) qu'un mot ou un groupe de mots (j'ai limité à 4 mots le groupe) dans le texte.
 
Actuellement, mon algo est assez bourrin puisque je procède ainsi :
1) nettoyage du texte (je vire une liste de mots prédéfinies, genre le la les dans et car... plus les nombres et ponctuation) -> ça me donne une liste de mots "pertinents"
2) pour chacun de ces mots restants, je regarde s'il n'existe pas dans la BD un article ayant le même titre. Si oui, stop, j'affiche sur le mot, un lien hypertexte pointant sur l'article de mediawiki, sinon, je fais la même vérification avec le mot initial + les 3 mots suivants (mais pris dans le texte original histoire d'avoir là, pour le coup, les mots genre le la les...).
 
Ex : J'ai le texte suivant :

Citation :


Le petit chat se promène dans la forêt. Il est bien content.


 
Avec mon algo, la phase 1 va me donner la liste de mots : petit, chat, promène, forêt, est, bien, content.
Phase 2, je boucle sur ma liste, pour le premier mot, je vais donc lancer les requêtes suivantes dans la BD :
1) un article existe portant le titre "petit"? oui -> stop, sinon on continue
2) un article existe portant le titre "petit chat "? oui -> stop, sinon on continue
3) un article existe portant le titre "petit chat se"? oui -> stop, sinon on continue
4) un article existe portant le titre "petit chat se promène"? oui -> stop, sinon on continue
 
Sur des textes de plusieurs 10ènes de mots, ça commence à faire pas mal de requêtes SQL :/ Je précise que mes textes sont dans un contexte technique (pas littéraire) du coup, j'ai une majorité de cas où la recherche d'un article sur un seul mot retourne un enregistrement.
 
Merci :)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
mood
Publicité
Posté le 15-09-2010 à 17:47:16  profilanswer
 

n°2023203
esox_ch
Posté le 16-09-2010 à 08:59:54  profilanswer
 

Salut,
 
Vu le traitement que tu fais, j'imagine que le 1er mot est le plus générique, ensuite spécifié par le 2ème, ... ? Donc une recherche "full text" ne te suffi pas, juste?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2023360
rufo
Pas me confondre avec Lycos!
Posté le 16-09-2010 à 17:12:44  profilanswer
 

Je ne présume de rien sur le "sens" de l'ordre les mots : je les prends dans l'ordre d'apparition dans le texte.
 
Sur un presque "vrai" ex tiré de mon appli :

Citation :


Le socle système V1.2 à installer sur le site TEST est identique à celui utilisé pour le dernier déploiement NOMSITE (juillet 2010).
 
Les disques/partitions a installer sont les suivantes:
- machines HP (tst01,tst02) : disque 6
- machines Linux : partition /dev/sda5
- machines BULL (tstc01): disque hdisk0
 
ATTENTION: la machine tstv03 a eu une panne suite a l'arret électrique de juillet (intervention du technicien sur la plateforme) ...il est nécessaire la réinstaller complètement. L'installation de sda6 sur tstv03 en socle APPLITOTO V1.1 est facultative.  


 
Dans ma BD, je vais trouver des articles qui ont pour titres les mêmes que les mots suivants de ma description :
- socle système   <- 2 mots
- NOMSITE   <- 1 mot
- Linux   <- 1 mot
- APPLITOTO   <- 1 mot
 
Ca veut dire, dans le cas du 1er article trouvé que j'ai recherché dans la BD :
- "socle" -> rien trouvé
- "socle système" -> trouvé, stop
 
Dans le cas du 2ième article : je recherche dans la BD "NOMSITE" -> trouvé, stop
 
Mais pour plein d'autres mots, par ex "installer", j'aurai lancé 4 requêtes dans la BD sans succès :
"installer" -> rien
"installer sur" -> rien
"installer sur le" -> rien
"installer sur le site" -> rien
Du coup, je passe au mot suivant qui sera le mot "site" (rappel, je vire des mots "vides" de sens, ici, "sur" et "le" ).
 
Je cherche donc à voir si y'a moyen d'améliorer. Je veux des liens sur des articles de ma BD qui ont rigoureusement le même titre que dans le texte (histoire que le lien vers l'article soit pertinent).
 
Merci :)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2023847
rufo
Pas me confondre avec Lycos!
Posté le 20-09-2010 à 14:02:33  profilanswer
 

Tout ça pour dire qu'une recherche fulltext ne fait pas l'affaire :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2023941
esox_ch
Posté le 20-09-2010 à 17:48:03  profilanswer
 

J'en ai parlé direct juste pour être sûr qu'on soit pas en train de chercher midi à 14h (même si je me doutais que, connaissant ton domaine d'expertise, les solutions style fulltext, tu devais connaître :lol: )
 
sinon moi là je sèche ... mais faut dire que je suis pas non plus une brute épaisse en algo :s


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2024047
rufo
Pas me confondre avec Lycos!
Posté le 21-09-2010 à 10:01:13  profilanswer
 

J'ai regardé dans wikipedia les algos classiques de recherche de sous-chaîne dans une autre, mais ça ne correspond pas à mon pb en fait. Moi, je recherche x sous-chaînes d'une chaîne dans un "catalogue" de chaînes. Je me suis donc dit, on va faire l'inverse : extraire toutes les chaînes du "catalogue" (la BD) et pour chaque chaîne du catalogue voir si elle se trouve dans ma description (la "grosse" chaîne). Mais là, je suis confronté à 3 autres pbs :
1) plus va y avoir d'articles dans ma BD, plus ça risque de prendre du temps, alors qu'en partant des mots de la description, si celle-ci était courte, la recherche allait vite.
2) j'ai pas mal d'article en BD qui sont des acronymes et relativement courts (genre 3-4 lettres). Si j'utilise une fonction style stripos(), il va me trouver des correspondances de sous-chaînes dans des mots, or moi, je veux des correspondances pour des mots ou groupes de mots entiers (ex : j'ai un article qui s'appelle "STR", je ne veux pas qui me dise ok pour un mot du genre "stratégie" qui contient certes la chaîne "str", mais n'est pas le mot "str" seul). Donc comment rechercher un mot ou plusieurs dans un ensemble de mots :??:
3) enfin, je ne recherche pas que dans une seule BD, je recherche dans plusieurs. Comment faire pour ne pas traiter plusieurs fois le même groupe de mots?


Message édité par rufo le 21-09-2010 à 10:06:07

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  Rechercher l'existance de chaînes dans une BD

 

Sujets relatifs
[Résolu][Batch] Comparaison chaines de caractèresTester l'existance d'un fichier sur un montage
rechercher éditeur python sous linux[C] passage par adresse de chaines de caracteres (résolu)
Faire de statistique sur une BD MYSQL en PHP(résolu... trop con) CHAINES supprimer xxx entre 'A' et 'B' ???
Rechercher un fichier dans les sous répertoiresprogramme débutant sur les chaînes.
Problème rechercher et remplacer sous AccessInsérer un fchier .zip dans BD mysql en PHP
Plus de sujets relatifs à : Rechercher l'existance de chaînes dans une BD


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR