Suchmaschine selber bauen

  1. Der_Jan

    Der_Jan Thread StarterMacUser Mitglied

    Mitglied seit:
    06.01.2004
    Beiträge:
    609
    Zustimmungen:
    7
    Ich träume von einer eigenen Suchmaschine für meine Homepage. Die Inhalte sind bereits vollständig in einer MySQL abgelegt, sollte also irgendwie möglich sein.

    Hat hier jemand mit solchen "Träumen" Erfahrung und kann mir einen Ansatz anbieten, wie eine Suchabfrage in php aussehen kann?

    Danke & Gruß
    Der Jan
     
    Der_Jan, 22.07.2005
  2. dms

    dms

    Naja, also um da eine genauere Aussage treffen zu können müsstest Du etwas von Deiner DB-Struktur erzählen.

    Ganz generell: SELECT * FROM {tabelle} WHERE {feld} LIKE '%$suchwort%';

    Bei mehreren Suchworten den Suchstring vorher mit explode(' ',$suchstring) zerstückeln und die SQL-Bedingung in einer Schleife zusammenbauen.

    Den Query am besten noch mit LIMIT eingrenzen und Seitenzahlen-Links per PHP ausgeben. Die Links müssen dann wieder auf die gleiche Seite führen, den Suchstring und einen Startpunkt für das LIMIT enthalten.
     
  3. michanismus

    michanismusMacUser Mitglied

    Mitglied seit:
    23.08.2004
    Beiträge:
    434
    Zustimmungen:
    0
    Eine Suche in der MySQL DB mit LIKE empfehle ich dir nicht!
    Genau für soetwas gibt es den FULLTEXT Index. Also, mysql.com
    und FULLTEXT suchen.

    Gruß, Micha
     
    michanismus, 26.07.2005
  4. dms

    dms

    Warum empfiehlst Du es nicht? Beides hat Vor- und Nachteile. Der Vorteil von einer Suche mit FULLTEXT/MATCH/AGAINST ist dass es etwas schneller ist (was aber bei kleinen Seiten nicht so sehr von Bedeutung ist) und die Relevanz direkt berechnet werden kann.
    Der Vorteil von LIKE ist dass auch Teilworte gefunden werden. Per MATCH/AGAINST wird z.B. nicht "wort" innerhalb von "antwort" gefunden.
    Beides hat natürlich seine Berechtigung.
     
  5. michanismus

    michanismusMacUser Mitglied

    Mitglied seit:
    23.08.2004
    Beiträge:
    434
    Zustimmungen:
    0
    Das ist nicht richtig. Auch bei FULLTEXT gibt es die Möglichkeit
    in BOOLEAN MODE zu suchen, was auch Teilwörter einschliesst.
    (Siehe MySQL.com -> FULLTEXT / BOOLEAN)
    Ausserdem ist die Relevanz für genau solch eine Suche doch sehr
    wichtig.
    Ich habe solche Website Suchen bei nicht CMS Systemen immer mit
    FULLTEXT realisiert. Durch indizierte Seiteninhalte über Meta
    Tags, Titel der einzelnen Seiten, kombiniert mit einigen Tricks
    zur Relevanzberechnung ganrantiere ich dir "bessere" Such-
    ergebnisse!

    Ist nur ein Tip, nur wenn mans schon macht, sollte man auch die
    dafür entwickelten Funktionen einer Datenbank nutzen. Meine
    Meinung :)

    Gruß, Micha
     
    michanismus, 27.07.2005
  6. dms

    dms

    Danke für den Tip. Das war mir unbekannt.
     
  7. Jakob

    JakobMacUser Mitglied

    Mitglied seit:
    05.01.2004
    Beiträge:
    1.067
    Zustimmungen:
    21
    Mal ganz pauschal gefragt:

    Ist es wirklich schneller? Habe hier eine Kundendatenbank (in etwa 8.000 Einträge). Wenn man nach nem Kunden sucht, wird bei mir die jeweilige Spalte mit LIKE durchsucht. Funktioniert ganz gut und schnell.
    Mein Problem damals war, dass alle Spalten durchsuchbar sein sollen. Mit FULLTEXT müsste man dann ja jede Spalte indizieren, was ja nicht so toll ist.
     
    Jakob, 29.07.2005
  8. michanismus

    michanismusMacUser Mitglied

    Mitglied seit:
    23.08.2004
    Beiträge:
    434
    Zustimmungen:
    0
    Hi,

    schneller:
    Es ist auf jeden Fall schneller.
    Bei deinen Kundendaten standen auch sicher nur ein paar Wörter
    in jedem Feld, was natürlich auch die zu durchsuchene Daten-
    größe nicht wirklich in die Höhe treibt. Hättest du aber 8000
    Datensätze in denen bedeutet mehr Inhalt ist würdest du auch
    einen Unterschied "spüren".
    Ich dachte da so an 2000 kb bei 8000 Kundendaten vs.
    30000 kb bei 8000 indizierten HTML Seiten.

    Was an einer Indizierung "nicht toll" sein soll musst du mir
    echt mal erklären! :)

    Gruß, Micha
     
    michanismus, 30.07.2005
  9. Jakob

    JakobMacUser Mitglied

    Mitglied seit:
    05.01.2004
    Beiträge:
    1.067
    Zustimmungen:
    21
    Ich weiß leider nicht ab welchen Größenordnungen das bei mySQL gilt, generell ist eine Suche mit Index aber erstmal aufwendiger=langsamer, da er ja erst den Index und dann die Datensätze durchsucht (2 Vorgänge) und nicht nur die Datensätze (1 Vorgang).

    Leider hab ich keine Ahnung, ob das in meinem Fall mit den 8000 Kundendaten, also z.B. Suche nach der indizierten Nachname-Spalte schon schneller ist.
     
    Jakob, 30.07.2005
  10. michanismus

    michanismusMacUser Mitglied

    Mitglied seit:
    23.08.2004
    Beiträge:
    434
    Zustimmungen:
    0
    Entschuldige, aber wer hat dir das denn bitte so erklärt???

    Ein INDEX ist meistens eine Spalte, nach der besonders häufig gesucht wird. Die Einträge in der Spalte werden als HASH Index gespeichert. Damit beschleunigt sich die Suche erheblich. Insbesondere bei Verknüpfungen von Tabellen wird MySQL dadurch erheblich schneller.

    Gruß, Micha
     
    michanismus, 30.07.2005
Die Seite wird geladen...
Ähnliche Themen - Suchmaschine selber bauen
  1. alex1000
    Antworten:
    24
    Aufrufe:
    1.420
    alex1000
    10.05.2016
  2. rolandfr
    Antworten:
    7
    Aufrufe:
    738
  3. huebnere
    Antworten:
    19
    Aufrufe:
    2.877
    huebnere
    22.09.2010
  4. worshipper
    Antworten:
    3
    Aufrufe:
    447
    worshipper
    03.04.2007
  5. Christen
    Antworten:
    0
    Aufrufe:
    999
    Christen
    20.11.2003