Kommentare
- Wenn Sie ' keine Erfahrung mit dem Schreiben von Code haben, wie wäre es, wenn Sie zuerst lernen, wie man Code erstellt? Das Erstellen einer Suchmaschine ist eine Art Overkill für jemanden, der neu in der Programmierung ist.
- Wie Terence sagt, ist es nichts für diejenigen, die neu in der Programmierung sind. 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 möchten, können wir Sie vielleicht in die richtige Richtung weisen.
- 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.
- Dieses Buch hat mir geholfen zu verstehen, was Suchmaschinen sind und wie sie aufgebaut sind: nlp.stanford.edu/IR-book
Antwort
Ich habe dies für a geschrieben Blog Ich hatte früher einen Weg zurück, als … es nicht mehr im Web war, also … hier ist es! :
So schreiben Sie eine Suchmaschine
Darren Rowse bei 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 meinen üblichen gewalttätigen Scherz, bei dem ich am Ende drohen werde, Hugo Chaves in die Kehle zu stechen.
Ich habe beschlossen, „Wie schreibe ich eine Suchmaschine?“ Zu schreiben. Ich habe dieses Thema aus zwei Gründen gewählt:
- Es gibt nicht viele gute Informationen dazu im Web.
- Ich schreibe gerade eine für einen meiner Kunden.
Mein Kunde ist ein Online-Händler von erheblicher Größe, daher durchsuche ich nicht das gesamte Web nur auf seiner Website, insbesondere nur auf der Website Produkte zum Verkauf auf ihrer Website. 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 nicht zu tief in die technischen Details einsteigen und auch nicht über Hardware- / Verarbeitungsleistungsanforderungen oder Web-Crawlen sprechen.
Ich verwende eine ziemlich einfache Technik Ich habe eine Tabelle (tblKeywords) mit drei Feldern:
- Itemid (Wenn Sie eine Websuche durchführen, ist dies eine URL)
- KeyWord (indiziertes Keyword)
- Gewicht (dies ist ein numerischer Wert von 1 bis 100, je höher diese Zahl, desto bedeutender (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 Gewichtungswert hängt davon ab, 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 indizieren Webseiten Die Wörter aus dem Seitentitel können 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 Gewicht für jedes Mal, wenn es auftritt. 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 Elemente 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, ein einfaches (und schnelles) 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, aber Sie können ein ähnliches System für Phrasen verwenden, wenn Sie herausfinden können, wo sie beginnen und enden.
Kommentare
- 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: programmers.stackexchange.com/questions/134292/…
- @Monster – Wie wäre es mit dem Artikel ' Hersteller \ SKU-Kombination?
- Sie können diese Daten auch von Unternehmen wie Etilize
- Kannst du es etwas genauer erklären, weil ich es nicht verstanden habe? Vielen Dank.
- Eine " ok " praktische Antwort. Dies ignoriert jedoch den gesamten Studienbereich, auch bekannt als " Information Retrieval ". In Bezug auf " In die richtige Richtung zeigen " IR wäre für mich besser gewesen.
Antwort
Der frei verteilte Entwurf von Einführung in das Abrufen von Informationen wird angezeigt Sei dein wichtigstes Referenzmaterial. Es verwaltet die Suche (Informationsabruf) von der Basisstufe bis zur fortgeschrittenen Ebene.
Antwort
Suchmaschinen basieren auf Webcrawler müssen Sie herausfinden, wie Sie einen dieser Trottel erstellen, bevor Sie eine Website entwickeln können, auf der die Ergebnisse angezeigt werden (dazu benötigen Sie eine schnelle, effiziente Datenbank gehen Sie mit).
Kommentare
- Eine Suchmaschine kann die Ausgabe eines Webcrawlers verbrauchen, aber sie haben ansonsten sehr wenig mit jedem zu tun andere. Darüber hinaus ist es unwahrscheinlich, dass eine schnelle, effiziente Datenbank der SQL-Variante dabei viel hilft. Suchmaschinen werden im Allgemeinen mit Indexierungsschemata für invertierte Dateien erstellt, die ' überhaupt nicht in die SQL-Form passen.
- @Marcelo Cantos: Indizierung von invertierten Dateien klingt kompliziert: -0 – Vielen Dank, dass Sie mir bei der Klärung meiner Antwort geholfen haben!
Antwort
Dies ist ein Einführungskurs in CS, der am 20. beginnt. Ich schlage vor, Sie probieren ihn aus. Er wird kostenlos angeboten
Kommentare
- Sebastian Thrun ist auch eng mit Google verbunden.