2009-06-25 2 views
0

J'essaie de comprendre comment l'outil de recherche dans un navigateur Web est capable d'analyser la totalité de la page Web (en supposant un contenu énorme sur une page) et de mettre en évidence le résultat au fur et à mesure de la frappe. Pré-cache-t-il la page en cours de chargement sur une carte ou utilise-t-il regex pour obtenir un résultat rapide à la volée?Comment l'outil de recherche de navigateur fonctionne-t-il sur une page Web?

Répondre

1

Le document est automatiquement lu par le navigateur. La recherche dans ce document peut parcourir l'arborescence DOM, décider des nœuds pouvant être recherchés et injecter des nœuds de document pour modifier l'affichage (par exemple, rendre le texte gras, etc.). Les algorithmes standard de correspondance de chaînes peuvent analyser une très grande partie du texte en une seconde (pensez-y, vous pouvez exécuter une partie multijoueur 3D avec détection de collisions, suppression de scènes, IA, effets sonores, effets flashy, intégration chat vocal, à 60fps sur un ordinateur standard, la recherche de quelques mégaoctets de texte n'est rien ..)

0

Je ne connais pas les détails, mais j'imagine que c'est quelque chose comme this.

L'algorithme de Boyer-Moore est un moyen très rapide et efficace de rechercher des sous-chaînes de texte.

0

Je suppose que cela impliquerait de parcourir le dom pour le texte brut. Je ne fais que spéculer mais je prendrais le dom et rechercherais des éléments qui pourraient contenir du texte en clair, à l'intérieur desquels je ferais une recherche du contenu de ces éléments et des éléments enfants. Si vous effectuez une recherche dans firefox et que vous regardez via firefbug, vous remarquerez que firefox modifie la dom du document afin que les éléments de recherche soient des enfants d'éléments eux-mêmes, auxquels un style tel que la surbrillance est appliqué.

Par exemple, voici ce qui se passe à 'eleme la phrase sur cette page si je commence une recherche en utilisant Firefox et mettre en évidence tous:

<span style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;" class="__mozilla-findbar-search">eleme</span> 
1

Trouver une sous-chaîne dans un texte plus volumineux n'est pas un travail ardu pour un ordinateur. En fait, je crois qu'il est beaucoup plus difficile de rendre une page html (mais pas trop difficile) que de trouver une sous-chaîne. Comme mentionné, il existe des algorithmes rapides pour cela.

Gardez à l'esprit, votre machine est presque entièrement dédié à ce à ce moment, donc il y a beaucoup de capacité de traitement dédiés à cette (assez simple) travail ...

0

php/Smarty

en utilisant url encoder vous pouvez le faire? pls serach sur le fichier urlencode?= "C-content"

préfixe

exemple de code :::: print_r ($ file); if (isset ($ fichier)) { $ var = exploser ("-", $ fichier); print_r ($ var); $ prefix = $ var [0]; $ script = $ var [1]; } sinon { $ file = "c-home1"; $ prefix = "c"; $ script = "home"; $ modid = 0; }

if ($ script == "") $ script = "prod_list";

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

// le code suivant trouve les modules de sufiix et trouve le nom du script switch ($ prefix) { case "c": $ module = "content"; pause; case "m": $ module = "mon compte"; pause; défaut: $ module = "contenu"; pause; }

$ smarty-> assign ("module", $ module);

// code suivant trouve les modules de suffixe et trouver le nom du script

include_script de $ = $ module "/" $ script.... "Php.";

if (Existences de fichier ($ include_script)) include_once ($ include_script); sinon include_once ("content/error.php"); if ($ script! = 'Home') { if ($ script == 'conditionsetcondition') { $ smarty-> display ("content/termsandcondition.tpl"); } else { $ smarty-> display ("template.tpl"); } } sinon { $ smarty-> display ("template_home.tpl"); $ smarty-> assign ("msg", $ msg); $ smarty-> assign ("msglogin", $ msglogin); } ?>

+1

Réponse non pertinente. – GTM

Questions connexes