Comment Faire un moteur de recherche ?

Répondre
jackbocar
le 14/09/2005 à 16:03
jackbocar
Bonjour,

Quand ferez-vous un "comment faire un moteur de recherche".

Pas un moteur basé sur les meta tags, mais sur les mots des pages.

Merci de vos réponses

Jack Bocar
Jeanlepail
le 14/09/2005 à 18:59
Jeanlepail
il faut un robot en C++ Qui fait toute les pages et qui enregistre dans un fichier texte ou une Bdd Mysql et puis rechercher dans la base mysql Select * FROM Page LIKE
ou sinon en php je ne sais pas faire :(
:)
Bzh
le 14/09/2005 à 21:02
Bzh
Qu est-ce que tu entends par moteur de recherche ????

Un moteur interne à ton site, ou bien un moteur style Google ????

Si c' est style Google, et bien tu montes ton entreprise (statue sarl conseillé), tu te mets patron et maintenant il ne te reste plus qu' à engager les meilleurs ingénieurs français. Et tu réussiras peut être à monter une équipe comme celle de Google.

Sinon, pour un moteur interne à ton site, il te suffit d' enregistrer toutes tes pages dans une base sql puis de rechercher dedans !!!!

A la limite, afin de faire la chose de façon intelligente, je te conseil de construire ton site autour d' une base de donnée. Et de générer ton site grace à elle !!!!(Que tes pages soient en fait des enregistrement de ta base)

J' espère avoir été clair !!!

Ciao et bon courage...
LA GLOBULE
le 15/09/2005 à 10:47
LA GLOBULE
En aucun cas il faut faire des LIKE jeanlepail.

Il faut utiliser des FULLINDEX.
jackbocar
le 15/09/2005 à 11:01
jackbocar
Bonjour La Globule,

Ne pas utiliser LIKE, mais les tutoriaux que j'ai consulté, disent LIKE ?

Et quelle est la syntaxe pour FULLINDEX ?

FULLINDEX, je ne l'ai pas trouvé dans le moteur de recherche du site ?

As-tu regardé mon script pour mon moteur de recherches ?

Merci de tes réponses.

Jack Bocar
LA GLOBULE
le 15/09/2005 à 13:48
LA GLOBULE
Ne pas utiliser LIKE, mais les tutoriaux que j'ai consulté, disent LIKE ?


C'est la solution de simplicité qui défonce ton serveur si tu as beaucoup de trafic.
Suis ces tuto si tu veux, mais moi, je ne le ferais pas.

Si tu veux un vrai tuto, lis la doc MySQL, là au moins, c'est pas des conneries qui sont écrites.

Exemple :

http://dev.mysql.com/doc/mysql/en/fulltext-search.html
speedylol
le 16/09/2005 à 10:25
speedylol
Voici un exemple que j'utilise

<?php
require("../design/tete-site1.php");
require("../sources/config.php");

echo"<br>";

$recherche = strtolower($recherche);

$mots = str_replace('+', ' ', trim($recherche));
$mots = str_replace('\'', ' ', $mots);
$mots = str_replace(',', ' ', $mots);
$mots = str_replace(':', ' ', $mots);

$tab = explode(' ' , $mots);

$nb = count($tab);

$sql = "select * from membre where login like '%$tab[0]%' or sexe like '%$tab[0]%' or region like '%$tab[0]%' or date like '%$tab[0]%'";

for($i = 1; $i < $nb; $i++) {
$sql .= "OR login like '%$tab[$i]%' or sexe like '%$tab[$i]%' or region like '%$tab[$i]%' ";
}

$result = mysql_db_query($base,$sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$test = mysql_num_rows($result);

echo"<center><form action=\"recherche.php\" method=\"post\" style='margin-top: 3px; margin-bottom: 3px'>
<input name=\"recherche\" type=\"text\" size=\"25\" value=\"$recherche\">
<input type=\"submit\" value=\"rechercher\">
</form></center>";

echo"<br>";

if ($test=="0" || $recherche=="")
{
echo"<center><font color=\"$police2\"><strong><strong>pas de résultat</strong></strong></font></center>";
}
else
{
function pluriel($a)
{
if ($a>1)
{
echo"s";
}
return 0;
}

echo"<center><font color=\"$police2\"><strong><strong>$test résultat";pluriel($test);echo"</strong></strong></font></center><br>";

echo"<center><table width=\"70%\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" bordercolor=\"$bordercolor\">
<tr bgcolor=\"$colp\">
<td><table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"3\">
<tr>
<td width=\"33%\"><strong><font color=\"$police3\" size=\"$width_police2\">Speudo</font></strong></td>
<td width=\"34%\"><div align=\"center\"><strong><font color=\"$police3\" size=\"$width_police2\">Sexe</font></strong><div align=\"right\"></td>
<td width=\"33%\"><div align=\"center\"><strong><font color=\"$police3\" size=\"$width_police2\">Region</font></strong></div></td>
</tr>";

while ($site=mysql_fetch_array($result))
{
$i++;
echo"<tr ";if ($i%2!=0){echo"bgcolor=\"$barre3\" ";}else{echo"bgcolor=\"$barre2\" ";} echo">
<td width=\"33%\"><a href=\"details.php?det=$site[login]\">$site[login]</a></td>
<td width=\"34%\"><div align=\"center\"><a href=\"details.php?det=$site[login]\">$site[sexe]</a><div align=\"right\"></td>
<td width=\"33%\"><div align=\"center\"><a href=\"details.php?det=$site[region]\">$site[region]</a></div></td>
</tr>";
}

echo"</table></td>
</tr>
</table></center>";
}

echo"<br><br>";

?>
jackbocar
le 16/09/2005 à 10:49
jackbocar
Bonjour La Globule,

Je suis allé sur le site de MySql, j'ai fait des tests, ça fonctionne avec une rapidité incroyable...

La seule chose que je n'ai pas trouvé, c'est le choix de l'affichage dans la sellection des mots.

MySql donne des arguments de sellections, mais pas de chois de tri !

Exemple :

$sql = 'SELECT * FROM recherches WHERE MATCH (mots,url) AGAINST ("abraxas, bernard, accusateurs, navarre, lexique, symbolique, payns")';

Si je choisi payns, il affiche plusieurs liste.

Peut-être ma table n'est pas très bien réalisée, je te la poste pour que tu me donnes ton avis :

CREATE TABLE recherches (
id int(11) unsigned NOT NULL auto_increment,
mots varchar(250),
url varchar(250),
descrip text,
PRIMARY KEY (id),
FULLTEXT KEY mots (mots, url)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;

Merci de tes conseils.

Jack Bocar
Répondre
LoadingChargement en cours