Abfrageproblem...(seh den Wald vor lauter Bäumen nicht...)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Abfrageproblem...(seh den Wald vor lauter Bäumen nicht...)

    Hallo,

    ich benutze den Code:
    PHP-Code:
    <?php
    include ("config.inc.php");
    $getdbw mysql_query ("SELECT rank FROM db_keywords WHERE keyword LIKE '%$name%'");
    $countkeywords mysql_num_rows($getdbw);
    echo 
    mysql_error();
    $countwert 0;
    echo 
    "Gefundene Einträge: ".$countkeywords."<br><br>";
    if (
    $countkeywords <=0)
    {
    echo 
    "Nix da....";
    }
    if (
    $countkeywords >=0)
    {
    while (
    $fields mysql_fetch_row($getdbw)) {
      for (
    $i=0$max=sizeof($fields); $i $max$i++) 
      {

      
    $countwert $countwert $fields[0];
      echo 
    $countwert."<br>";

      }
     }
    echo 
    $countwert;
    }
    ?>
    Meine Datenbank besteht nur aus 3 Tabellen, ID, keywords und rank.
    Die Abfrage soll nun folgendes ermöglichen:
    Bei Eingabe eines Suchbegriffes ($name) soll die DB nach dessen vorhandensein durchsuchen und den Wert "rank" bei den gefundenen
    Spalten ausgeben und summieren. Soweit, so gut.
    Mein Problem ist nur, das es nicht funktioniert....

    Als Beispiel sind in der DB folgende Werte gespeichert:
    id|keyword |rank
    1 boot 2
    2 haus 3
    3 flugzeug 2
    usw.
    Wenn ich nun nach dem Keyword "boot" suche, soll die Abfrage die Spalte
    mit der ID 1 finden und den Wert unter "rank" auslesen. Dieses
    funktioniert auch soweit.
    Was nicht funktioniert:
    Wenn ich nach "hausboot" suche, sollte die Funktion eigentlich die
    Spalten mit der ID 1 und 2, also "boot" und "haus" finden, den rank-Wert
    der jeweiligen Spalten auslesen und summiert ausgeben....ABER:
    Das Ergebnis ist dann immer 0, d.h. es werden keine Treffer gefunden.
    Zudem habe ich das Problem, das mit der verwendeten Abfrage auch
    unvollständige Suchstrings unterstützt werden, d.h. wenn ich "boo" eingebe, kommt als Ergebnis trotzdem die Spalte mit der ID 1 raus....
    Meine Frage ist nun also:
    1.) Wie erreiche ich es das auch kombinierte Begriffe gefunden werden ?
    2.) Wie unterdrücke ich Treffer bei unvollständigen (somit nicht 100%ig gleichen) Suchstrings ??

    Gruss
    GDF

  • #2
    zu 1.
    du mußt als Suchstring schon 2 Wörter eingeben, dann per explode trennen und als 2 Bedingungen mit OR verknüpft an die Abfrage übergeben. Denn woher soll der Computer wissen, wo er das Suchwort trennen soll.

    zu 2.
    verstehe nich was du meinst, erkläre nochmals

    Kommentar


    • #3
      Original geschrieben von asp2php
      zu 1.
      du mußt als Suchstring schon 2 Wörter eingeben, dann per explode trennen und als 2 Bedingungen mit OR verknüpft an die Abfrage übergeben. Denn woher soll der Computer wissen, wo er das Suchwort trennen soll.

      zu 2.
      verstehe nich was du meinst, erkläre nochmals
      Hallo nochmal,

      mein Problem ist, das ich als Suchstring KEINE getrennten Begriffe ggf. habe, das heisst ich kann diese auch nicht trennen.
      Die Abfrage soll z.B. bei einem Suchstring "neueshausbootmitmotor" die
      enthaltenden Teilbriffe "haus" und "boot" in der DB finden (umgekehrter Abgleich: Datenbankinhalt = Identisch mit Suchstring ODER Teil des Suchstrings).
      Zu 2.): Die Suchstrings (oder die Teile) müssen IDENTISCH mit den Datenbankeinträgen sein (groß/klein egal, sonst identisch).

      Gruss
      GDF

      Kommentar


      • #4
        dann hast du da was falsch gedacht. Auf jeden Fall geht's so nicht, nicht so einfach, weil für dich als Mensch, kannst du in etwa erkennen, wie sowas sinnvoll getrennt werden kann/muß, aber der Computer erkennt sowas nicht, du mußt ihn sagen, nach welcher Regel er so 'n Suchwort trennen soll, und hier sehe ich schwarz. Klar daß du z.B. das Suchwort in einzelne Buchstaben zerlegst, dich über die Kombinatorik schlau machst und so versuchen, das Wort in einzelne Begriffe zu kombinieren, ob dabei aber sinnvolle Wörter entstehen ...

        P.S. bei so 'nem Suchwort muß der Google sogar passen
        Zuletzt geändert von asp2php; 14.11.2004, 18:32.

        Kommentar


        • #5
          Hy,

          ich hab schon geahnt, das es etwas komplizierter wird....
          Mein erster Ansatz war mit preg_match() zu arbeiten, nur leider
          müsste ich dann zuerst alle Daten der DB in ein Array laden und das würde den Rahmen (auch zeitlich) sprengen (ca. 400.000 Datensätze).
          Vielleicht hat ja doch noch einer eine zündende Idee...

          Gruss
          GDF

          Kommentar


          • #6
            habs nur grob überflogen.

            wenn kannst natürlich alle möglichen wortkombinationen aus dem string raussuchen, aber das wird wohl die db-abfrage nicht gerade beschleunigen.

            Kommentar

            Lädt...
            X