Frage

Ich habe immer daran interessiert, eine Web-Suchmaschine zu entwickeln. Was ist ein guter Anfang? Ich habe von Lucene gehört, aber ich bin kein großer Java Kerl. Jede andere gute Ressourcen oder Open-Source-Projekte?

Ich verstehe, es ist ein riesiger unter Mitnahmen, aber das ist Teil des Reizes. Ich sehe nicht die nächste Google zu erstellen, nur etwas, das ich verwende, um eine Untergruppe von Websites zu suchen, die ich könnte mich interessieren.

War es hilfreich?

Lösung

Es gibt mehrere Teile zu einer Suchmaschine. Im Großen und Ganzen in einer hoffnungslos allgemein (Leute, fühlen Sie sich frei zu bearbeiten, wenn Sie das Gefühl haben bessere Beschreibungen hinzufügen, Links, etc.):

  1. Der Crawler . Dies ist der Teil, der durch das Netz geht, packt die Seiten und speichert Informationen über sie in einem zentralen Datenspeicher. Neben dem Text selbst, werden Sie Dinge wie die Zeit, die Sie auf sie zugegriffen usw. Der Crawler ist intelligent genug, um zu wissen muss, wie oft bestimmte Domains, treffen die robots.txt-Konvention usw.

    zu gehorchen
  2. Der Parser . Dieser liest die vom Crawler abgerufenen Daten, analysiert sie, speichert, was Metadaten es muss, wegwirft Junk und möglicherweise macht Vorschläge zu den Crawler auf, was beim nächsten Mal zu holen.

  3. Der Indexer . Liest das Zeug der Parser analysiert und erstellt invertierten Indizes in die Bedingungen auf den Web-Seiten gefunden. Es kann so klug sein, wie Sie es wollen -. NLP Techniken anwenden, um Indizes von Konzepten, vernetzen Dinge zu machen, werfen in Synonyme, etc

  4. Der Ranking Motor . Gegeben ein paar tausend URLs passenden „apple“, wie Sie entscheiden, welches Ergebnis ist die beste? Jut den Index nicht geben Ihnen diese Informationen. Sie müssen den Text, die Verknüpfungsstruktur, und was auch immer andere Stücke, die Sie, betrachten, wollen analysieren und einige Partituren zu erstellen. Dies kann vollständig im laufenden Betrieb durchgeführt werden (das ist wirklich hart) oder auf Basis von einigen vorausberechneten Vorstellungen von „Experten“ (siehe PageRank, etc).

  5. Das vordere Ende . Es muss etwas Benutzerabfrage erhalten, drücken Sie den zentralen Motor, und darauf zu reagieren; dies etwas über Caching Ergebnisse intelligent sein muss, die möglicherweise in den Ergebnissen aus anderen Quellen mischen, usw. Es hat seine eigenen Probleme.

Mein Rat - wählen, welche dieser interessiert Sie am meisten, herunterladen Lucene oder Xapian oder andere Open-Source-Projekt gibt, die etwas herausziehen, die eine der oben genannten Aufgaben der Fall ist, und versuchen, sie zu ersetzen. Hoffentlich mit etwas besser :-).

Einige Links, die nützlich erweisen: "Agile Web-Crawler" , ein Papier aus Estland (auf Englisch) Sphinx Search Engine , eine Indizierung suchen und api suchen. Für große DBs, aber modular und offen. "Information Retrieval , ein Lehrbuch über IR von Manning et al verschiedene Probleme. Gute Übersicht, wie die Indizes aufgebaut, die kommen, sowie einige Diskussion der kriechenden usw. kostenlose Online-Version (bis jetzt)!

Andere Tipps

Xapian ist eine weitere Option für Sie. Ich habe gehört, es skaliert besser als einige Implementierungen von Lucene.

Schauen Sie sich nutch , wird es durch den gleichen Kerl geschrieben, die Lucene erstellt ( Doug Cutting ).

Es scheint mir, dass der größte Teil der Indizierung von Websites ist. Herstellung von Bots im Internet scheuern und deren Inhalte analysieren.

Ein Freund und ich sprachen darüber, wie erstaunlich Google und andere Suchmaschinen haben unter der Haube sein. Millionen von Ergebnissen in weniger als einer halben Sekunde? Verrückt. Ich denke, dass sie voreingestellten Suchergebnisse haben könnten für gewöhnlich Suche durchgeführt.

edit: Diese Seite sieht ziemlich interessant.

würde ich mit einem bestehenden Projekt, wie die Open-Source-Suchmaschine Wikia starten.

[Mein Verständnis ist, dass das Wikia Search Projekt beendet ist. Aber ich denke, mit einem vorhandenen Open-Source-Projekt beteiligt bekommen ist eine gute Möglichkeit, in ein Unternehmen dieser Größe zu erleichtern.]

http://re.search.wikia.com/about/get_involved.html

Wenn Sie Interesse am Lernen über die Theorie hinter Information Retrieval und einige der technischen Details hinter der Umsetzung Suchmaschinen, kann ich das Buch empfehlen Managing Gigabytes von Ian Witten, Alistair Moffat und Tim C. Bell. (Disclosure: Alistair Moffat war meine Universität Supervisor). Obwohl es ein bisschen veraltet jetzt (die erste Ausgabe im Jahr 1994 herauskam und die zweite im Jahr 1999 - was ist die Verwaltung von Gigabyte jetzt so schwer ist?), Ist die zugrunde liegende Theorie immer noch gesund und es ist eine großartige Einführung in sowohl die Indizierung und die Verwendung von Kompression in Indizierung und Retrieval-Systemen.

Ich bin in Search Engine auch interessiert. Ich empfahl sowohl Apache Hadoop MapReduce und Apache Lucene. Immer schneller von Hadoop Cluster ist der beste Weg.

Es gibt Häfen von Lucene. Zend hat eine frei zur Verfügung. Werfen Sie einen Blick auf diese kurze Anleitung: http://devzone.zend.com/node/ Ansicht / id / 91

Hier ist ein etwas anderer Ansatz, wenn Sie bei der Programmierung der es nicht so sehr interessiert sind, aber mehr Interesse an den Ergebnissen: halten sie für den Aufbau mit Google Custom Search Engine API.

Vorteile:

  • Google macht die ganze schwere Arbeit für Sie
  • Vertraute Benutzeroberfläche und das Verhalten für die Benutzer
  • Kann etwas nach oben hat und in wenigen Minuten
  • Laufen
  • Viele Anpassungsmöglichkeiten

Nachteile:

  • Sie schreiben keinen Code, so dass keine Gelegenheit zum Lernen da
  • Alles, was Sie suchen möchten, müssen bereits öffentlich und in dem Google-Index sein
  • Ihr Ergebnis ist gebunden an Google
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top