begin process at 2012 05 31 16:49:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

Bases de données

 > 

Recherche dans une bdd [TITRE MODERE CAR PEU EXPLICITE!]


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Recherche dans une bdd [TITRE MODERE CAR PEU EXPLICITE!]

mercredi 22 mars 2006 à 22:25:41 | Recherche dans une bdd [TITRE MODERE CAR PEU EXPLICITE!]

milkasoprano

Membre Club

Bonjour,
Voila cette apres midi jai cherché une solution a mon probleme concernant le fait de faire une recherche a partir dune base de donnée et un champ precis. or je voudrai par exemple depuis un formulaire php taper une phrase...
et comme tous le monde sait, une phrase et composé de mot ! c 'est meme mots ont les appellera mots clefs !

Quand on lance la requete php, on constate que les mots clefs que j'ai taper ( imaginons ) 

Aujourdhui je vais à la piscine et je prend le bus 

renverra a un resultat...
des phrases programmé renvoi a une reponse .. voila le but du script.
Donc imaginons que je tape la phrase que j'ai mis en haut dans mon formulaire.
Mon script va chercher tous les mots comportant les mots que jai tapé et va afficher un resultat.

Mais moi je voudrai restreindre tous ca ! et dire ceci :
tous les mots qui sont tapés sont verifiés dans la base et renvoyé au plus proches au mots pres !

Je sous entend bien plus proche dans le sens que .

Aujourdhui = 1 mots 
je = 1 mot
vais = 1 mot
à = 1 mot 

Jusqu'a ce qui ramene a un resultat unique.

Aujourd'hui je vais à la piscine. ( si la phrase est la meme dans la base de donnée alors le resultat s'effectuera ) mais il y a une faille
imaginons que je mette : 

demain je vais a la piscine. le resultat se rapprochera vers aujourdhui je vais a la piscine 

mais si il y a deux fois le mot piscine dans la base de donnée, il va mafficher le resultat le plus proche. et c'est pas ce que je veux.. genre par exemple: hier jai vu un gars ce noyer dans la piscine (ben oui le mot piscine figure dans la base )

en gros je veux regroupé tous les mots qui sont tapé et si la majorité d'entre eux sont presentes (mot clefs) ( c a dire le maximum ! alors on affiche ce resultat maximum! et pas l'autre.) c'est a dire le je, vais, a, la, piscine 5mots clefs
       

Tous les mots tapés sont verifiés...

Le probleme avec mon script c'est que il ignore pas le fait que dans un enregistrement par exemple :

Je vais a la piscine
1   1    1 1    1
Je vais a la mer
 1  1    1 1  0

le "je" le "vais" le "a" le "la"

il l'ai garde pour lui, je veux dire il l'ai ignore pas.
pourtant jai bien dis dans mon formulaire. je vais a la piscine
donc il doit prendre le maximum de mot clefs pour retourner a un resultat unique.
piscine est present dans mon formulaire !!!!! il doit ignorer l'enregistrement ou il y a la phrase je vais a la mer..

voici mon script..
j'espere sincerement quelquun pourra maider parce que je deviens dingue ! jessai detre le plus precis en vous expliquant mon probleme mais c'est pas facile ...

jespere que vous allez arrivé a me comprendre..
--------------------------
SI VOUS VOULEZ TESTER EN LOCAL CEST POSSIBLE

table ---
CREER UN CHAMP : id (int) un autre champ question (text) et un champ resultat (text) et essayer ! je vous jure vous comprendrez mieux ;)
et inserez plusieurs phrases avec les memes mots ou les memes pronoms etc..

---
<form name="form1" method="post" action="boul.php">
    <p><font face="Tahoma" size="2">Posez votre question : </font><br><input type="text" name="question" size="79"><input type="submit" name="submit" value="Ok">&nbsp;</p>
</form>

<? include("config.php");
if(empty($_POST["submit"])){
}
else{
$array_ask = explode(' ',$_POST['question']);
$first = true;
$req = '';
foreach ($array_ask as $key => $value)
{
       if ($first)
       {
            $first = false;
       $req .= "`question` LIKE '%".$value."%'";
       }
else
{
       $req .= " OR `question` LIKE '%".$value."%'";
}

}
$req_results = mysql_query("SELECT * FROM `voyance` WHERE ".$req."");


if ( @mysql_num_rows($req_results) == 0)
{
   echo 'aucun r&eacute;sultat';
}
elseif(@mysql_num_rows($req_results)>1){
echo 'Désolé mais je ne comprend pas votre question, pouvez vous etre plus precis';
}
elseif(@mysql_num_rows($req_results)==1){
$rest = mysql_fetch_array($req_results);

echo $rest['resultat'];
}
else{
echo "erreur";
}

 


 
}
?>



jeudi 23 mars 2006 à 07:21:56 | Re : Aidez moi sil vous plait :(

malalam

Administrateur CodeS-SourceS
Hello,

tourne toi vers les index fulltext (regarde la doc mysql), tu ne t'en sortiras pas avec des LIKE...
Tu peux aussi viser Levenshtein, et le principe que j'utilise dans mes codes 'Phonex' et 'Soundex2' ou 'Recherche des villes et codes postaux français'
jeudi 23 mars 2006 à 10:17:20 | Re : Recherche dans une bdd [TITRE MODERE CAR PEU EXPLICITE!]

milkasoprano

Membre Club

Merci malalam pour ta reponse ;) Japprecie toujours quand tu me reponds ;)
jai vu ton message a 8h ce matin et la on est 10h13. je suis tjs au point de depart. je fais que d'essayer les methodes que tu utilises généralement mais la ca dépasse carrement mon niveau... donc j'abandonne. je peux plus chercher, ca me deprime.
je vais essayer de tenter le index fulltext mais c meme pas garantie que jy arriverai.

J'ai vu ta source au fait sur le soundex2 mais sérieusement ca dépasse mon niveau dinteligence. je me content quand je fais un script de faire des choses relativement connu mais la pour faire une recherche via une base de donnée avec le maximum de mot clef qui retourne au resultat le plus proche ! ca me depasse. j'ai tous essayé mais j'en deviens a bout...

Merci encore pour tous ;)
Bonne journée a toi...

Je fermerai ce mess en fin d'apres midi si je trouve...
+++

samedi 25 mars 2006 à 12:24:11 | Re : Recherche dans une bdd [TITRE MODERE CAR PEU EXPLICITE!]

milkasoprano

Membre Club

Bon j'y arrive toujours pas mais j'ai fais ceci :

$question = $_POST["question"];
$query = "SELECT * FROM faq WHERE MATCH (question) AGAINST ('$question' IN BOOLEAN MODE)";
$result = mysql_query($query);

Alors dans mon champ mysql il est indiqué ceci :

                          QUESTION                                                   RESULTAT
est ce que je vais avoir des enfants plus tard  --> OUI BEAUCOUP BEAUCOUP
Est ce que je vais avoir mon baccalaureat      --> Ouais mention bac + 20

Quand je tape dans mon formulaire

Est ce que je vais avoir mon baccalaureat   
Il me retourne a OUI BEAUCOUP BEAUCOUP

POURTANT la requete ce fait ! mais au dirait qu'il ne prend pas en compte le mot :
mon baccalaureat  

Quand je tape ensuite dans le formulaire mon baccalaureat  , la requete me repond : Ouais mention bac + 20

FRANCHEMENT j'y comprend plus rien !
il faudrai que ca marche en mettant les conditions suivantes : en fonction du nombre de mots dans la ligne, du nombre de mots uniques dans cette ligne, du nombre total de mots dans la liste, et du nombre de documents (lignes) qui contiennent un mot en particulier. ( genre baccalaureat ! present dans cette phrase )



Cette discussion est classée dans : req, mots, resultat, vais, piscine


Répondre à ce message

Sujets en rapport avec ce message

recherche simultanée sur plusieurs table [ par dodji_phpcs ] J'ai ecrit un petit script qui permet rechercher des données dans une table X à partir d'un mot clef entre dans un formulaire et les resultat s'affich extraction d'information depuis une bdd [ par cacoucatatonique ] je voudrais savoir s'il existe un moin de desactiver les message de type WARNING, car ils me derangent de + en +. A mois que quelqu'un à une idée sur Probleme pagination sur script recherche [ par McGyver59 ] Bonjour Je reviens vers vous car j'ai un soucis pour faire une pagination. Chaque fois que je met un code de pagination cela m'affiche plus de 5000 p Probleme enregistrement avec combox [ par ndaseraphin ] bonjour, voici le remplissage de mon combobox. $req = "SELECT CodeReg,LibReg FROM region" ; $result = mysql_query( $req ); $sql = "INSERT Query was empty [ par tif27940 ] Bonjour, voila j'execute ma requéte et elle me dit :"Query was empty" $cat_p vient d'un fichier csv [code=php] /////////////////////////verifica checked après un while [ par Gille59 ] Bonjour, Problème de checked après un WHILE : Le script fonctionne sans le checked, $taille++ est pour mettre un nombre sur le mot "taille" exempl Incrémentation champ mysql par une condition en php [ par phoenixgreg ] Bonsoir tout le monde, Je bloque sur une ptite chose, j'aimerai faire en sorte de proposer deux boutons à mes visiteurs sur mon blog. L'un pour un "J ajouter et supprimer avec des checkbox dans un tableau [ par hichamaouraghe ] bonjour tout le monde j'ai un tableau que je l'extrait de la base de donnée puis j'ajoute des checkbox devant chaque ligne mais le probleme ce que je Recherche rapide de mots [ par WhiteDwarf ] J'ai une base de donnée d'environ 336.000 mots francais, et je travaille sur un projet dynamique style barre de recherche code source... je me demanda SQL - ACCESS [ par flopad ] Bonjour, j'ai le code suivant, comment est ce que je peux l'adapter pour une basse access et non SQL...??  $base="D:\\Qualite\Annuaire\Annuaire.mdb";


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales