Wenn ich eine Suchmaschine bauen wollte, wie würde ich anfangen? [geschlossen]


9

Kann mich jemand in die richtige Richtung weisen? Ich habe wirklich keine Erfahrung mit dem Schreiben von Code, aber ich lerne schnell. Ich versuche nicht zu sagen, dass es einfach sein wird, aber ich hoffe, jemand kann mir helfen ...


6
Wenn Sie keine Erfahrung mit dem Schreiben von Code haben, lernen Sie zuerst, wie man Code schreibt. Das Erstellen einer Suchmaschine ist für jemanden, der neu in der Programmierung ist, eine Art Overkill.
Terence Ponce

3
Wie Terence sagt, ist es nichts für Programmierneulinge. Jede Suchmaschine, die überhaupt gut ist, ist in der Regel eine ziemlich komplizierte Arbeit. Es gibt einen Grund, warum Google so massiv ist, dass sie eine sehr schwierige Aufgabe ziemlich gut erledigen. Selbst erfahrene Programmierer bevorzugen es, etwas Vorgefertigtes zu verwenden. Wenn Sie eine Vorstellung davon haben, wofür Sie es wollen, können wir Sie vielleicht in die richtige Richtung weisen.
Orbling

2
Beginnen Sie mit einem kleineren Projekt. Das Erstellen einer Suchmaschine erfordert eine enorme Menge an Code. Und wie sammeln Sie alle Daten für Ihre Suchmaschine? Sie benötigen viel mehr Code und eine massive Infrastruktur. Beginnen Sie bitte mit kleineren Projekten und arbeiten Sie daran, sonst werden Sie nur frustriert.
James

1
Dieses Buch hat mir geholfen zu verstehen, was Suchmaschinen sind und wie sie aufgebaut sind: nlp.stanford.edu/IR-book
devnull

Antworten:


16

Ich habe das für einen Blog geschrieben, den ich vor langer Zeit hatte, als ... es nicht mehr im Web war, also ... hier ist es! ::

Wie schreibe ich eine Suchmaschine

Darren Rowse von probolgger.net veranstaltet ein Gruppenschreibprojekt zu allen "How to". Dies ist einer der wenigen Blogs, die ich regelmäßig lese, also überlege ich mir, warum ich zur Abwechslung nicht etwas Lesenswertes schreibe, sondern meine übliche gewalttätige Schimpfe, bei der ich am Ende drohen werde, Hugo Chaves in die Kehle zu stechen.

Ich beschloss, "Wie man eine Suchmaschine schreibt" zu schreiben. Ich habe dieses Thema aus zwei Gründen gewählt:

  1. Es gibt nicht viele gute Informationen dazu im Web.
  2. Ich schreibe gerade eine für einen meiner Kunden.

Mein Kunde ist ein Online-Händler von beträchtlicher Größe, daher durchsuche ich nicht das gesamte Web, sondern nur die Website, insbesondere nur die Produkte, die auf seiner Website zum Verkauf angeboten werden. Nichtsdestotrotz können dieselben Techniken zum Schreiben komplexerer Techniken zum Durchsuchen des Internets verwendet werden. Ich weiß, dass dies kein Tech-Blog ist, daher werde ich mich nicht zu sehr mit den technischen Details befassen und auch nicht über die Anforderungen an Hardware \ Prozessorleistung oder Web-Crawlen sprechen.

Ich benutze eine ziemlich einfache Technik, ich habe eine Tabelle (tblKeywords) mit drei Feldern:

  1. Itemid (Wenn Sie eine Websuche durchführen, ist dies eine URL.)
  2. KeyWord (indiziertes Schlüsselwort)
  3. Gewicht (dies ist ein numerischer Wert von 1 bis 100, je höher diese Zahl, desto signifikanter (Gewicht) das Schlüsselwort trägt) * PK = ItemID + KeyWord

Als erstes sammle ich einzelne Wörter an jedem relevanten Ort. Für meinen Kunden werde ich Wörter aus der Produkttabelle ziehen. Speziell aus den Feldern Itemid, ItemName, ItemShortDescription, ItemLongDescription, Hersteller, ManufacturerSKU, Kategorie1, Kategorie2, Kategorie3 usw. Wenn Sie Webseiten indizieren, können Sie Daten aus dem Seitentext, dem Seitentitel, der URL oder Links auf anderen Seiten abrufen, die auf die zu indizierende Seite verweisen.

Der Gewichtswert wird dadurch bestimmt, woher das Schlüsselwort stammt. In meinem Fall würde beispielsweise die SKU der Artikelherstellung eine Gewichtung von 100 erhalten, während ein Wort aus dem Artikelnamen eine Gewichtung von 25 erhalten könnte. Ein Wort aus der ItemLongDescription kann eine Gewichtung von 5 erhalten. Wenn Sie Webseiten indizieren, werden die Wörter Der Seitentitel kann eine Gewichtung von 75 erhalten, während ein fettgedrucktes Wort aus dem Seitentext eine Gewichtung von 10 erhalten kann. Wenn ein Wort mehr als einmal oder \ und an mehr als einer Stelle wiederholt wird, addieren Sie die Gewichtung jedes Mal es passiert. Beispiel: Wenn das Wort "Shirt" für ItemId = 12345 von zwei Stellen stammt, The ItemName (Gewicht 25) und zweimal in ItemLongDescription (Gewicht 5 x2 = 10) vorkommt, hat das Wort "Shirt" für ItemId ein Gesamtgewicht von 35 = 12345.

Wenn jemand nach "rosa Hemd" sucht, durchsuche ich meine Tabelle nach allen Instanzen der Wörter "rosa" oder "Hemd" und summiere die Gewichte. Anzeigen der Artikel mit dem höchsten Gesamtgewicht oben.

SQL:

Select Itemid, sum(weight) as totWeight from tblKeywords
group by itemId having keyword in ('pink','shirt')

Hier haben Sie es also, eine einfache (und schnelle) Suchmaschine. Natürlich gibt es noch mehr zu tun, z. B. Interpunktion, HTML-Code und wertlose Schlüsselwörter wie "und", "wenn", "oder". Dies betrifft nicht die Suche nach Schlüsselphrasen. Sie können jedoch ein ähnliches System für Phrasen verwenden, wenn Sie herausfinden können, wo sie beginnen und enden.


danke nette antwort. Was würden Sie auch für die Gruppierung von Produkten vorschlagen? Ich meine, Sie haben 1 Million gecrawlte Produktseiten von verschiedenen Websites. Sie möchten dieselben Produkte auf verschiedenen Websites
gruppieren

@Monster - Wie wäre es mit der Kombination aus Hersteller und Artikel des Artikels?
Idioten

Sie können diese Daten auch von Unternehmen wie Etilize
Morons

Kannst du es ein bisschen mehr erklären, weil ich es nicht verstanden habe? Vielen Dank.
MonsterMMORPG

3
Eine "ok" praktische Antwort. Dies ignoriert jedoch den gesamten Studienbereich, auch bekannt als "Information Retrieval". In Bezug auf "In die richtige Richtung zeigen" wäre IR für mich besser gewesen.
Darknight

3

Suchmaschinen basieren auf Webcrawlern . Sie müssen herausfinden, wie einer dieser Trottel erstellt wird, bevor Sie eine Website entwickeln können, auf der die Ergebnisse angezeigt werden (dazu benötigen Sie eine schnelle und effiziente Datenbank).


3
Eine Suchmaschine kann die Ausgabe eines Webcrawlers verbrauchen, hat aber ansonsten sehr wenig miteinander zu tun. Darüber hinaus ist es unwahrscheinlich, dass eine schnelle, effiziente Datenbank der SQL-Variante dabei viel hilft. Suchmaschinen werden im Allgemeinen mit invertierten Dateiindizierungsschemata erstellt, die überhaupt nicht in die SQL-Form passen.
Marcelo Cantos

@Marcelo Cantos: Indizierte Dateiindizierung klingt kompliziert: -0 - Vielen Dank, dass Sie mir bei der Klärung meiner Antwort geholfen haben!
Palbakulich


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.