[Hilfe] Eigene Suchmaschine?

Pascal3366

Komplett-PC-Aufrüster(in)
Hallo liebe PCGHx Community,

Wie ihr schon im Titel sehen könnt würde ich gerne eine eigene eigenständige Suchmaschine programmieren (wie z.B Google, Yahoo, Bing...etc.)
Leider hat mir bisher kein Tutorial weitergeholfen und ich weiß nicht genau wie ich anfangen soll :)
Vielleicht kann mir hier einer weiterhelfen? ....

Danke schonmal im Vorraus ;)

Die Momentane URL lautet : SearchDat Search Engine

-----------------------------------------
MfG Pascal3366
 
Wozu um alles in der Welt brauchst du eine eigene Suchmaschine? Und vlt. solltest du dich erst mal mit dem Thema Suchmaischienen beschäftigen, das ist nämlich nicht leicht. Du könntest höchstens eine Maschine schreiben welche auf Basis von Google oder Yahoo arbeitet und deren Ergebnisse weiter filtert aber mehr geht nicht!
 
Da hast du dir aber was vorgenommen :devil:
Das Grundprinzip ist eigentlich relativ simpel: Du fängst im Prinzip mit einem Crawler an. Der analysiert die Webseiten, folgt Links, etc. Die hierbei gesammelten Daten müssen dann irgendwie "verpackt" und gespeichert werden, so dass man sie schnell durchsuchen kann (sehr vereinfacht ausgedrückt). Realistisch betrachtet dürfte es allerdings schwer werden, den etablierten Anbietern die Stirn zu bieten.
 
Zuletzt bearbeitet:
Ja da hab ich mir wirklch was vorgenommen :D
Aber ich brauchte mal wieder was zum programmieren und da dachte ich mir ne eigene suchmaschine wär doch ganz nett und ja ich möchte sie wirklich komplett selber programmieren.
Ich habe bereits eben mal ein Tutorial befolgt doch am Ende hats nicht geklappt

:D
 
Naja, du brauchst halt zunächst mal den Crawler. Der muss, wenn es sicht auf Webseiten beschränkt, HTML verstehen können. Also zumindest Texte und Links sollte er dann erkennen können. Den Links muss der Crawler dann ebenfalls untersuchen, wobei man dann noch unterscheiden sollte, was das für ein Link ist (Webseite, Datei, ...). Zumindest für diesen Teil, also das Herstellen und Nutzen einer HTTP-Verbindung und die Verarbeitung von HTML, sollte es im Netz für deine Programmiersprache durchaus Tutorials geben.

Das Verarbeiten der gefundenen Informationen, so dass sie durchsuchbar sind (Indizierung), würde ich als den deutlich schwierigeren Teil betrachten. Da muss man sich geeignete Datenstrukturen und Algorithmen überlegen bzw. nachschlagen. Eine gute Vorverarbeitung der Daten kann das Durchsuchen nämlich deutlich beschleunigen und vereinfachen. Für den Anfang tut es da sicherlich eine einfache SQL-Datenbank.
 
Die mysql datenbank hab ich ;)
Momentan ist das problem:
Ich habe mal seiten in die datenbank eingetragen, doch gebe ich in die suche etwas ein, werden alle seiten angezeigt welche in der datenbank stehen und nicht das nachdem man gesucht hat ;)
 
das hier ist meine "search.php" datei, wo der haupt code für die suche drin steht :

<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<!-- Optional: Include the jQuery library -->
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<!-- Optional: Incorporate the Bootstrap JavaScript plugins -->
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<!-- Optional Theme -->
<link rel="stylesheet" href="css/style.css">

<?php
mysql_connect("localhost", "u241211141_index", "Passwort");
mysql_select_db("u241211141_index");

$sql = mysql_query("SELECT * FROM searchengine WHERE pagecontent LIKE '%$_GET[term]%' LIMIT 0,$_GET[results]");

while($ser = mysql_fetch_array($sql)) { echo "<h2><a href='$ser[pageurl]'>$ser[pageurl]</a></h2>"; }

?>
<hr>
<a href="./index2.php">Go Back</a>
 
Zuletzt bearbeitet:
Die Query hätte gereicht, Username und PW deines MySQL Servers müssen wir hier nicht unbedingt sehen können ;-)

Grundsätzlich: Deine Query ist schon mal nicht SQL Injection sicher, das solltest du fixen sofern die Seite öffentlich verfügbar ist.

Das mit dem LIKE ist zwar nicht gerade effizient, da der ja jedes Feld durchsuchen muss, sollte aber eigentlich funktionieren. Hast du dir mal angesehen, was im pagecontent Feld enthalten ist? Also ob der gesuchte Term darin vorkommt?

Ich bin da jetzt wahrlich kein Spezialist auf dem Gebiet, aber hier mal mein Ansatz zur SuFu wie ich es versuchen würde: Nach dem Einlesen der Seite läuft ein Tokenizer, der den Content in einzelne Wörter aufteilt (das klingt einfacher als es ist!). Die einzelnen Wörter könnten anschließen gefiltert werden, beispielsweise interessieren einen ja "Füllwörter" wie "und", "der", "die", "das", etc. in der Regel weniger. Eine Lemmatisierung bzw. ein Stemming ist ebenfalls hilfreich, da dass die Worte auf ihre Grundform zurückführt. Das ermöglicht dir dann beispielsweise im Text "sehen" über "sah" und "sieht" zu finden. Nach der Filterung bleiben dann nur noch die "interessanten" Worte übrig, die man dann speichern kann (mit einem Verweis auf die Seite, wo sie vorkommen). So hätte man die Seite dann indexiert.
 
Zuletzt bearbeitet:
Also das einzige, was du bauen kannst, ist eine Meta-Suchmaschine, für alles andere wirst du mindestens ein abgeschlossenes Informatik-Studium benötigen ;)
Du brauchst selbst für eine Meta-Suchmaschine schon einiges an Wissen (aus der theoretischen Informatik), weil eine Suchmaschine vor allem mit Mengen, Teilmengen und Mengenbeziehungen arbeitet.

Die Theorie hinter einer Suchmaschine ist im Prinzip reine Mathematik und hat mit Informatik nur Bedingt was zu tun.
Wenn du auf trockene Mathematik und Mengenlehre stehst, hast du sicherlich das richtige Thema gewählt, um dich dran abzuarbeiten, wenn du aber eher Richtung praktische Informatik gehen willst, solltest du dir ein anderes Thema aussuchen. :D
 
Hehe hab leider kein Informatik Studium hinter mir ;)
und mathe ist gar nicht mein Ding.
Wie funktioniert denn so eine meta Suchmaschine? :)
 
Ich will dir ja den Spaß an deiner Idee nicht nehmen, aber dann solltest du vllt ein anderes Projekt wählen.
Wenn man sich schon die Mühe macht und ein Projekt in Angriff nimmt, sollte einem der Inhalt auch liegen, weil die Tiefpunkte in so einem Projekt kommen schon von allein.
Ich will damit sagen, wenn du dir ein Thema suchst, was vom Inhalt mehr deine Fähigkeiten entspricht, wirst du mehr Spaß am programmieren bekommen, als wenn du ein Thema hast, das dir nur für 1 - 2 Wochen Spaß macht und danach schon deinen Horizont übersteigt.

Eine Meta-Suchmaschine wertet stur die Inhalte einer Webseite nach Schlüsselworten aus (Meta-Daten) und speichert diese.
Wenn du jetzt Suchworte eingibst, sorgt ein match-Algorithmus dafür, dass das Ergebnis zurückgeliefert wird, was am besten zu deiner Anfrage passt.
Das ist die einfachste Form der Suchmaschine, aber der match-Algorithmus ist je nach Anforderung auch nicht einfach zu schreiben.

Für Google sind meta-Daten zwar auch wichtig, aber hier kommen noch Kantengewichte dazu, d.h. die Suchergebnisse bei denen sind in einer Art Graph gespeichert.
Die Suchergebnisse werden dadurch signifikant besser, weil man zusätzliche Einflussfaktoren (z.B. Standort, Zeit, etc.) mit einbeziehen kann.

Deswegen hab ich das mit dem abgeschlossenen Studium geschrieben, weil es für eine Suchmaschine wirklich entscheidend ist, wie du deine Daten speicherst.
Und dafür sollte man sich mal mit einigen Konzepten (Graphen, Bäumen etc.) tiefergehend beschäftigt haben, weil das die Grundlagen einer Suchmaschine sind, das programmieren ist da wirklich Nebensache.
 
Gibt es vielleicht irgendeine möglichkeit den Google crawler oder dessen Datenbank zu nutzen? :D

Edit : oder was haltet ihr von openwebspider vielleicht waere das ja ein sinnvolles framework :D

OpenWebSpider
 
Zuletzt bearbeitet:
Du wirst keine Suchmaschine programmieren. Dazu fehlen dir augenscheinlich absolut essentielle Kenntnisse, die man nicht einfach mit einem Tutorial abdeckt. Oder was sind gewichtete Kanten? Ein geschlossener Weg? Wie passen Suchmaschinen und Graphentheorie überhaupt zusammen?

Aber da bist du nicht der erste, alle Jahre wieder kommt jemand wie du und will zum Beispiel ein eigenes Betriebssystem programmieren. Allein. Mit ein paar losen Kenntnissen in HTML. Oder ein ABSOLUT REVOLUTIONÄRES SPIEL! Das quasi wie GTA, Age of Empires und Call of Duty in einem ist, nur besser und geiler. "Ich kann aber bis jetzt nur ein bisschen Blender."

Back kleinere Brötchen! Um Programmieren zu lernen muss man wirklich nicht studiert haben, aber es motiviert NICHT und schon gar nicht langfristig, sich zum Einstieg (!) solche völlig utopischen Ziele zu setzen.
 
Ob man ihn jetzt so runterziehen muss glaube ich kaum. Eine gut funktionierende Suchmaschine wird er nicht schreiben aber ich glaube das weiß er selbst auch. Einen einfachen Crawler zu schreiben ist imho nicht besonders schwer. Es kommt aber auch sehr stark darauf an ob man alles selbst schreiben will. Ich hab z.B mal einen Crawler in Java geschrieben mit ein paar fertige APIs als hilfe. Da war das auch an einem Wochenende getan (wobei ich da eher das Augenmerk auf Clustering gesetzt habe, anstatt den eigentlichen Crawler).

Schaffbar ist das auf jedenfall.

Ich denke bei einer einfachen Suchmaschine ist der Crawler das Wichtigste. Du musst Seiten nach Links durchsuchen außerdem schaust du schonmal wie oft ein bestimmtest Wort vorkommt um nachher irgendeine Datenstruktur zu füttern. Die gefundenen Links gibst du in eine andere Struktur (eine Queue würde sich dafür eignen) prüfst aber vorher noch ob du den gefundenen Links nicht vielleicht doch schon geparst hast und lässt deinen Parser auch dort drüber laufen.

Jetzt hast du schonmal verschiedene Seiten geparst und kannst ein einfaches Interface bauen, das überprüft welche deiner eingegebenen Worte am ehsten zu welchem Link passt und diesen ausgeben.

Ich denke das ist erstmal ein guter Start und sollte viel zum Lernen beitragen.
 
[PUSH]
So Suchmaschine läuft nun auf SearchDat Search Engine

Viel Spass ;)

Verbesserungsvorschläge...? gerne.

Edit:
Was Jetzt aufjedenfall noch fehlt ist ein crawler, denn ich muss alle Seiten manuell in die Datenbank einfügen
 
Zuletzt bearbeitet:
Hehe LOL :lol:
hoe.jpg
 
Zurück