[php] Comment creer un moteur de recherche ?

Comment creer un moteur de recherche ? [php] - PHP - Programmation

Marsh Posté le 19-01-2003 à 14:40:37    

le but est de creer un moteur de recherche interne a mon site mais je c  pas trop par ou commencer  :sweat:

Reply

Marsh Posté le 19-01-2003 à 14:40:37   

Reply

Marsh Posté le 19-01-2003 à 16:47:47    

Code :
  1. $req="SELECT * FROM forum WHERE Category='{$_POST['cat']}' AND language='{$_POST['lang']}' AND (nom like \"%$nom%\" OR comment like \"%$nom%\" )";
  2. $que=mysql_query($req) or die (mysql_error());


 
simple exemple

Reply

Marsh Posté le 20-01-2003 à 21:40:18    

Ca m'interesse moi aussi. Mais je sais pas du tout comment ça fonctionne... Ca marche avec des mots clefs?? C'est pour mon site : http://rogerone.free.fr

Reply

Marsh Posté le 02-04-2003 à 16:23:40    

Ce que je comptes faire pour mon site :
Pour chaque phrase, découpe pour avoir un tableau de mot.
Je vire tout les doublons.
Je vires les mots appartenant à une liste donné. (afin d'éliminer les mots du genre "le" )
Pour chaque mot, je ne gardes que les 6 premiers caractères que je stockes dans une table (dont la structure suit plus bas) avec le numéro de message corespondant.
 
Structure de la table :
id integer
texte char 6
num_message integer
 
Pour la recherche, je prends chaque mot choisit, je gardes les 6 première lettres pour rechercher dans la table ci dessus et le mot complet pour chercher sur la table des messages.
Pour la sous partie à 6 caractère, je fait une copie de la lsite en remplaçant le dernier caractère par le caractère suivant dans l'ordre alphabétique (exemple omega devient omegb)
Je lance la requête suivante : (pas testé donc peut être avec de petites erreurs)
 
SELECT mess_id,mess_texte  
FROM tab_recherche,tab_message
WHERE mess_id=id
AND ( texte>="omega"
AND texte<"omegb"
AND upper(mess_texte) like "OMEGA" )
 
 
Les trois dernières lignes sont a répété pour chaque mot.
Si tous les mots recherchés font partie des mots interdits (non significatif) il ne sert à rien de lancer la requête et on prévient l'utilisateur.
Si certains mots recherchés font partis des mots non significatifs, alors au lieu des trois dernières lignes, on ne met que la dernière. (sans la parenthèse)
 
C'est une recherche sur le début du mot uniquement.
 
 
J'espères que ca va vous avoir aidé à optimisé tout ça. :)

Reply

Marsh Posté le 02-04-2003 à 16:27:22    

utilises google :D

Reply

Marsh Posté le 02-04-2003 à 16:33:19    

bobuse a écrit :

utilises google :D  

Mal optimisé pour des petits sites (t'as plus de chance de tomber chez les autres :D ), sans compter que toutes les pages sont pas toujorus indexés. ;)

Reply

Marsh Posté le 02-04-2003 à 16:39:58    

omega2 a écrit :

Mal optimisé pour des petits sites (t'as plus de chance de tomber chez les autres :D ), sans compter que toutes les pages sont pas toujorus indexés. ;)


ok ok ;)

Reply

Marsh Posté le 02-04-2003 à 19:04:47    

Regarde sur commentcamarche.net, y'a un truc comme çà  
!!!

Reply

Marsh Posté le 02-04-2003 à 22:53:28    

ProToinou a écrit :

Regarde sur commentcamarche.net, y'a un truc comme çà  
!!!
 

Sur ce site là, ce que j'ai trouvé, c'est comment utiliser les moteur de recher du genre d'altavista. J'y ai pas vu d'indications sur comment en créer un pour son site personnel. (mal ccherché peut être)

Reply

Marsh Posté le 02-04-2003 à 23:00:55    

http://www.commentcamarche.net/php/phpmoteur.php3
 
regarde je crois que çà correspond à tes attentes... j'ai pas vraiment lu...
Donc désolé si c'est pas çà  
 :jap:


---------------

Reply

Marsh Posté le 02-04-2003 à 23:00:55   

Reply

Marsh Posté le 02-04-2003 à 23:57:37    

ProToinou a écrit :

http://www.commentcamarche.net/php/phpmoteur.php3
 
regarde je crois que çà correspond à tes attentes... j'ai pas vraiment lu...
Donc désolé si c'est pas çà  
 :jap:  

T'as raison, ca a l'air d'être à peu près ça.
Mais je suis pas certain qu'il fasse le même genre de recherche que ce que je me prépare à faire. Celui là a l'air de référencé les mots clées de la page html finale tant dis que celui que je penses faire moi prend plusieurs textes (comme les messages d'un forum) les inddexes et permet ensuite de retrouver les textes corespondants à la recherche.
Bon, le principe de base est le même, seules certaines parties changent. ;)
 
D'ailleur dans mes explications de tout à l'heure, j'ai fait une erreur.
Quand on a plusieurs mots avec ma méthode, il faut faire :
 

SELECT mess_id,mess_texte  
FROM tab_recherche,tab_message
WHERE mess_id=id
AND (
( texte>="OMEGA"
AND texte<"OMEGB" )
[ OR ( texte>="MOT"
AND texte<"MOU" ) ]
)
AND (upper(mess_texte) like "OMEGA" [ OR upper(mess_texte) like "MOT" ] )


 
J'ai mis des crochets autour des parties qu'il faut répété pour chaque mot en plus du premier.
Pour les mots non significatif, on rajoute juste ce qui est entre la seconde paire de crochets.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed