MOTEUR DE RECHERCHE

SuperDevy Messages postés 842 Date d'inscription dimanche 24 novembre 2002 Statut Membre Dernière intervention 2 juillet 2007 - 19 juin 2005 à 21:30
spidermario Messages postés 121 Date d'inscription mercredi 26 octobre 2005 Statut Membre Dernière intervention 14 mars 2009 - 8 mai 2006 à 17:40
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/32165-moteur-de-recherche

spidermario Messages postés 121 Date d'inscription mercredi 26 octobre 2005 Statut Membre Dernière intervention 14 mars 2009 1
8 mai 2006 à 17:40
En faisant la fonction cherche_mot, tu as refait la fonction eregi() de PHP :)
SuperDevy Messages postés 842 Date d'inscription dimanche 24 novembre 2002 Statut Membre Dernière intervention 2 juillet 2007
1 juil. 2005 à 08:22
Ca s'appelle la recherche dichotomique, mais comme tu le dis il faut une liste triée : ce qui n'est pas le cas ici.
crackter Messages postés 401 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 31 janvier 2010
1 juil. 2005 à 02:19
La méthode de recherce la plus rapide à utiliser est (heuu désolé je sais pas comment la nommer :[ ) un tri de "position", c'est ce que j'ai utilisé pour mon jeu hyperlettre qui fait une recherche sur un dictionnaire...


ca peut ressembler à ca en codé :


trouve=false;
position=(mini+maxi)/2; //mini et maxi sont les positions bornes de la liste

tant que (not trouve & position<maxi & position>mini) {
si on a trouvé le mot alors
trouve=true;
si on est en position "inférieur" alors
maxi = position
si on est en position "supérieur" alors
mini = position
position = (maxi+mini)/2
}

Bien évidemment faut une liste triée.

Il est 2h20 donc je sais même pas en fait si mon commentaire est justifié quant à ta source... désolé lol je vais aller me pieuter :).

bonne soirée ou bonne journée =).
SuperDevy Messages postés 842 Date d'inscription dimanche 24 novembre 2002 Statut Membre Dernière intervention 2 juillet 2007
19 juin 2005 à 23:52
Non, malheureusement (il faudrait les RegExp qui devraient venir avec Flash 8ball)
http://wiki.media-box.net/documentation/flash/string/split

Sinon, tu peux faire le split avec les espaces comme séparateur, puis supprimer toutes les cases vides du tableau :
function division (phrase) {
var particules = phrase.split(' ');
var mots = new Array();
for (var i=0; i<particules.length; i++) {
if (particules[i]!='') mots.push(particules[i]);
}
return mots;
}
manoloz Messages postés 26 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 27 septembre 2006
19 juin 2005 à 23:25
merci pour le conseil, si tu en as beaucoup comme ça reviens de temps en temps car je risque encore de sortir quelque chose de tordu du genre inventer ma propre fonction de tri alors qu'il y'en a déjà

est-ce que la fonction String.split peut considérer un séparateur variable? par exemple il se peut que les mots soient séparés des fois par un espace, d fois par des espaces de 10 km...!!!! ça dépend de l'utilisateur (il é pa toujours très malin)
SuperDevy Messages postés 842 Date d'inscription dimanche 24 novembre 2002 Statut Membre Dernière intervention 2 juillet 2007
19 juin 2005 à 21:30
Le principe est bon, c'est ce que j'ai utilisé dans ma classe de recherche : http://www.flashkod.com/code.aspx?ID=31701


La fonction de recherche particulaire peut être condensée :
function cherche_mot(mot, string) {
return (string.toLowerCase().indexOf(mot.toLowerCase()) != -1)
}


Pour ce qui est de la recherche de plusieur mots, tu fais plusieurs fois toLowerCase() sur la même chaîne (c'est assez lourd comme méthode) :
function cherche_groupe(groupe, string) {
var i 0, n groupe.length;
var string = new String(string.toLowerCase());
var result = false;
while (i<n && !result) {
result = (string.indexOf(groupe[i].toLowerCase()) != -1);
i++;
}
return result;
}

Pour diviser la phrase en mots, il te suffit d'utiliser String.split('separateur')
Rejoignez-nous