Heim > Backend-Entwicklung > PHP-Tutorial > Grundlagen der Suchmaschinen-Kerntechnologie_php

Grundlagen der Suchmaschinen-Kerntechnologie_php

微波
Freigeben: 2023-03-11 21:14:01
Original
1282 Leute haben es durchsucht

Wenn es um Websuchmaschinen geht, denken die meisten Menschen an Yahoo. Tatsächlich hat Yahoo eine Ära der Internetsuche eingeläutet. Allerdings wurde die Technologie, die Yahoo derzeit zum Durchsuchen des Internets verwendet, ursprünglich nicht vom Unternehmen entwickelt. Im August 2000 übernahm Yahoo die Technologie von Google (www.google.com), einem von Studenten der Stanford University gegründeten Venture-Unternehmen. Der Grund ist ganz einfach: Die Suchmaschine von Google kann schneller und genauer nach den benötigten Informationen suchen als die bisher von Yahoo verwendete Technologie.

Es ist für uns wahrscheinlich unmöglich, in kurzer Zeit selbst eine leistungsstarke und effiziente Suchmaschine und Datenbank zu entwerfen und zu entwickeln, da Yahoo jedoch die Technologie anderer Leute nutzt Können wir nicht auch die vorgefertigten Suchmaschinen-Websites anderer Leute nutzen?

Analyse von Programmierideen

Wir können uns Folgendes vorstellen: eine Abfrage simulieren, einen Suchbefehl in einem entsprechenden Format an eine Suchmaschinen-Website erteilen, dann die Suchergebnisse zurückgeben und den HTML-Code analysieren Wir bearbeiten die Ergebnisse, entfernen überflüssige Zeichen und Codes und zeigen sie schließlich im erforderlichen Format auf unserer eigenen Website an.

Der Schlüssel zum Problem besteht also darin, dass wir Suchinformationen auswählen müssen, die genau (damit unsere Suche aussagekräftiger ist) und schnell (da wir zusätzliche Zeit für die Analyse der Suchergebnisse benötigen) auswählen müssen und zeigen Sie sie an), eine Suchwebsite mit prägnanten Suchergebnissen (praktisch für die Analyse und Entfernung von HTML-Quellcode). Aufgrund der verschiedenen hervorragenden Funktionen der Suchmaschine der neuen Generation, Google, wählen wir sie hier als Beispiel, um zu sehen, wie PHP verwendet wird Implementieren Sie die Hintergrundverarbeitung der Google-Suche (www. google.com) und den personalisierten Front-End-Anzeigeprozess.

Werfen wir zunächst einen Blick auf die Zusammensetzung der Abfragebefehle von Google. Rufen Sie die Website www.google.com auf, geben Sie „abcd“ in die Abfrageleiste ein und klicken Sie auf die Schaltfläche „Abfrage“. Wir können feststellen, dass sich die Adressleiste des Browsers in „http://www.google.com/search?q=“ ändert abcd&btnG=Google %CB%D1%CB%F7&hl=zh-CN&lr=". Es ist ersichtlich, dass Google die Abfrageparameter übergibt und den Abfragebefehl über die get-Methode des Formulars sendet. Wir können die Funktion file() in PHP verwenden, um diesen Abfragevorgang zu simulieren.

Verstehen Sie die Funktion File()

Syntax: array file(string filename);

Der Rückgabewert ist ein Array und alle Dateien werden in die Array-Variable eingelesen. Die Dateien hier können lokal oder remote sein. Remote-Dateien müssen das verwendete Protokoll angeben. Beispiel: result=file("http://www.google.com/search?q=a ... mp;hl=zh-CN&lr="), diese Anweisung simuliert unsere Abfrage nach dem Wort „abcd“. Google-Prozess und überträgt die Suchergebnisse in Form von Elementen pro Zeile zurück an die Array-Variable result. Da die hier gelesene Datei remote ist, darf der Protokollname „http://“ nicht fehlen.

Wenn Sie möchten, dass der Benutzer Suchzeichen für eine beliebige Suche eingibt, können wir ein Eingabetextfeld und eine Schaltfläche zum Senden erstellen und das gesuchte Zeichen „abcd“ oben durch eine Variable ersetzen:
echo '

'; //Für ein Formular ohne Parameter ist die Standard-Übermittlungsmethode get, an sich selbst übermittelt
echo '' ; / /Erstellen Sie ein Texteingabefeld
echo '';/Erstellen Sie eine Schaltfläche zum Senden einer Abfrage
echo '
'; 🎜>
if (isset( keywords)) // PHP generiert nach der Übermittlung die Variable kwywords, was die Ausführung des folgenden Programms nach der Übermittlung erfordert
{
urlencode( keywords); // URL-Kodierung des Benutzers Eingabeinhalt
result=file("http://www.google.com/search?q=". keywords."&btnG=Google%CB%D1%CB%F7&hl=zh-CN&lr="); >/ /Ersetzen Sie Variablen in der Abfrageanweisung und speichern Sie die Abfrageergebnisse in der Array-Variable result
result_string=join(" ", result); //Fügen Sie das Array $result in
string
zusammen, jedes Array Element Zum Einfügen Leerzeichen verwenden ... //Weiterverarbeitung }

Das obige Programm kann bereits Inhalte basierend auf Benutzereingaben abfragen und das Ergebnis synthetisieren eine String-Variable $result_string. Bitte beachten Sie, dass Sie die Funktion urlencode() verwenden müssen, um die Benutzereingaben per URL zu kodieren, damit Sie die eingegebenen chinesischen Zeichen, Leerzeichen und andere
Sonderzeichen
normal abfragen können. Dies dient auch der Simulation von Google Geben Sie den Befehl so realistisch wie möglich ein, um die Genauigkeit der Suchergebnisse sicherzustellen.
Analyse von Google
Zum besseren Verständnis nehmen wir an, dass wir wirklich Folgendes brauchen: den Titel der Suchergebnisse. URL und Einführung usw. Dies ist eine einfache und typische Anforderung. Auf diese Weise müssen wir nur noch die Kopf- und Fußzeile der Google-Suchergebnisse entfernen, einschließlich eines Google-Logos, eines Eingabefelds für eine erneute Suche, einer Suchergebnisbeschreibung usw., und den ursprünglichen HTML-Code aus dem verbleibenden Suchergebnis entfernen Elemente formatieren, ersetzen Sie es durch das gewünschte Format.

Dazu müssen wir den HTML-Quellcode der Google-Suchergebnisse sorgfältig analysieren und die Muster finden. Es ist nicht schwer herauszufinden, dass der Text der Google-Suchergebnisse immer zwischen dem ersten

-Tag und dem vorletzten

-Tag eingefügt ist unmittelbar gefolgt von und Tabellenzeichen, und diese Kombination „


Alle folgenden Vorgänge werden im Abschnitt „Weiterverarbeitung“ des oben genannten Verfahrens fortgesetzt.

result_string = strstr( result_string, "

"); //Erhalten Sie die Zeichenfolge nach result_string beginnend mit dem ersten

, um den Google-Header zu entfernen
position= strpos( result_string," Die Position des

Tabellensymbols
result_string= substr( result_string,0, position);//Abfangen der Zeichenfolge vor dem ersten

Tabellensymbol, um die Fußnote zu entfernen

Anwendung und Implementierung

Nun, da wir das nützliche HTML-Quellcode-Grundgerüst erhalten haben, besteht das verbleibende Problem darin, den Inhalt unabhängig voneinander anzuzeigen und die Unterschiede zwischen den einzelnen Elementen herauszufinden regelmäßig durch
getrennt, d. h. jeder ist ein Absatz. Gemäß dieser Funktion verwenden wir die Funktion „explodieren“ zum Ausschneiden jedes Eintrags:

Syntax: „explodieren“(String-Trennzeichen, String-String)

Gibt ein Array zurück und jede kleine Zeichenfolge wird im Array gespeichert

Also:
result_array=explode("

", //; Verwenden Sie die Zeichenfolge „

“, um die Ergebnisse auszuschneiden.

Wir erhalten ein Array result_array, wobei jedes Element ein Suchergebniseintrag ist Code und ersetzen Sie ihn dann nach Bedarf > Für jeden Eintrag können wir leicht einige Merkmale finden: Jeder Eintrag besteht aus Titel, Zusammenfassung, Einleitung, Kategorie, URL usw., und jeder Teil ist umbrochen, das heißt, er enthält
erneut teilen: (Der folgende Handler wird in die obige Schleife eingefügt)
every_item=explode("
", result_array[ i]);

Auf diese Weise erhalten wir ein Array every_item, where every_item[0] ist der Titel, every_item[1] und every_item[2] sind zwei Zeilen der Zusammenfassung, wenn die Header von every_item[3], every_item[4] usw. „Einleitung:", "< Schriftgröße=-1 Farbe=#6f6f6f>Kategorie:< /font>" Zeichen sind Einleitung oder Kategorie (da einige Ergebniseinträge dieses Element nicht haben) , wenn der Header „“ enthält, muss es sich um die URL handeln. Wir verwenden für diesen Vergleich häufig
regulären Ausdruck
. Dies ist auch sehr praktisch, wenn Sie ihn ersetzen möchten , wie zum Beispiel das Einfügen eines Titels $every_item[0] selbst hat einen Link Wir möchten dieses Linkattribut so ändern, dass es den Link in einem neuen Fenster öffnet:
echo eregi_replace(' {
... //. Jedes Element verarbeiten Jedes Element außer dem ersten Element (das erste Element ist der Titel, der bereits angezeigt wird)
... //Weitere Formatänderungen }
Auf diese Weise werden die Linkattribute geändert und viele andere werden angezeigt. Formatänderungen, Entfernung und Ersetzung können alle mit der regulären Ersetzung eregi_replace() durchgeführt werden.

Zu diesem Zeitpunkt haben wir jedes Element jedes Suchelements erhalten und können das Format jedes Elements nach Belieben ändern und sogar eine schöne Tabelle darauf erstellen. Ein gutes Programm sollte jedoch in der Lage sein, sich an verschiedene Betriebsumgebungen anzupassen, und dies ist keine Ausnahme. Tatsächlich haben wir nur eine Framework-Methode für das HTML-Stripping von Suchergebnissen besprochen , wie z. B. Es zeigt die Gesamtzahl der Suchergebnisse an, wie viele Seiten es unterteilt usw. Es kann sogar die „Kategorie“, „Einleitung“ und andere Codes im Zusammenhang mit Google entfernen, sodass Kunden die ursprüngliche Website unter nicht sehen können alle. Allerdings können wir alle diese Inhalte und Anforderungen durch die Analyse von HTML extrahieren. Jetzt kann es jeder selbst tun und eine hochgradig personalisierte Suchmaschine erstellen.

Das obige ist der detaillierte Inhalt vonGrundlagen der Suchmaschinen-Kerntechnologie_php. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage