Begriffe aus "Such-Query" Filtern

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

  • Begriffe aus "Such-Query" Filtern

    Tag allerseits,

    Ich habe mir eine sehr einfach Suchmaschine gebaut, die nach Wörtern, bzw Zeichenfolgen in meienr Datenbank sucht. Das funktioniert soweit ganz wunderbar aber jetzt möchte ich Wörter wie und, oder, in etc aus dem Query herausfiltern, bovor ich ihn der Datenbank geben (das selbe gilt für einfach Buchstaben oder blind auf die Tastatur gehauene Tasten).

    Mein Query Sieht folgendermaßen aus:
    PHP-Code:
      $query"SELECT * FROM doc 
    WHERE titel LIKE '%"
    .$_POST['feld']."%' 
    OR doc LIKE '%"
    .$_POST['feld']."%' ";
      
    $sql=mysql_query($query); 
    Das Ganze wird weiter unten gefetched und in einer Tabelle ausgegeben. Wie sollte jetzt dieser Filter aussehen und wo muss ich ihn implentieren?

    MFG
    Uri
    Watch me set my pants on fire!!!!!

  • #2
    Na ich würd dir ja gleich zu einer vernünftigen mysql Volltext-Suche raten... ansonsten musst du halt $_POST['feld'] vorher splitten an den Leerzeichen und die Wörter einzeln durchgehen, nach bestimmten Kriterien ggf. unsetten und hinterher wieder alles zusammen flicken ... oder sowas in der Art... die Volltextsuche wäre aber mit Sicherheit die bessere Wahl

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Original geschrieben von ghostgambler
      Na ich würd dir ja gleich zu einer vernünftigen mysql Volltext-Suche raten... ansonsten musst du halt $_POST['feld'] vorher splitten an den Leerzeichen und die Wörter einzeln durchgehen, nach bestimmten Kriterien ggf. unsetten und hinterher wieder alles zusammen flicken ... oder sowas in der Art... die Volltextsuche wäre aber mit Sicherheit die bessere Wahl
      Puh, ehrlich gesagt raff ich ja gar nicht wie die implementierte MYSQL Volltextsuche funktioniert.
      Werds mal versuchen.

      [edit]
      Also bei der MYSQL Volltextsuche müssen die zu durchsuchenden Spalten index spalten sein, richtig? oder begebe ich mich hier auf den Holzweg?

      [edit2]
      Ok, war eigendlich ganz einfach.
      Nur warum krieg ich bei diesem Query:
      PHP-Code:
      $query"SELECT * FROM doc 
      WHERE MATCH (titel, doc) AGAINST ('"
      .$_POST['feld']."')"
      nur ein Ergebnis wenn das gesuchte Wort in der Spalte doc steht und nicht wenn es in der Spalte titel steht?
      Spalte titel: varchar(200)
      Spalte doc: text

      MFG
      Uri

      [edit3]
      Ok, das problem ist eigendlich nicht vorhanden, da das suchwort dass ich als zweites genutzt habe wohl rausgefiltert wird (habe die einträge allesamt test genannt. test1, test2, etc und danach hab ich auch gesucht).
      Zuletzt geändert von urishima; 13.03.2007, 13:12.
      Watch me set my pants on fire!!!!!

      Kommentar


      • #4
        Gibt es eine Möglichkeit die Filter der MYSQL-Volltextsuche zu ändern?
        Watch me set my pants on fire!!!!!

        Kommentar


        • #5
          welche filter? was heißt filter ändern?

          Kommentar


          • #6
            Original geschrieben von penizillin
            welche filter? was heißt filter ändern?
            Ja diese Funktion (FULLTEXT) muss doch irgendwo eine Wortsammlung haben oder sowas, nach der sie dann wörter wie und, oder, so, and und ähnliches ignoriert. Oder läuft das anders ab?
            Watch me set my pants on fire!!!!!

            Kommentar


            • #7
              http://dev.mysql.com/doc/refman/4.1/...xt-search.html
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Hm, die Probleme nehmen kein Ende. Weiß der Geier wieso aber es funktioniert nicht mehr.

                Also hier nochmal der Quellcode:

                PHP-Code:
                 <?
                $query= "SELECT * FROM doc WHERE MATCH (titel, doc) AGAINST ('".$_POST['begriff']."')";

                  $sql=mysql_query($query);

                  
                ?>
                <table>
                <?
                  while($erg=mysql_fetch_array($sql, MYSQL_ASSOC) or die(mysql_error())){
                    echo "<tr>"; 
                    echo  "<td><a href=\"showdoc.php?id=".$erg['doc_id']."\">".$erg['titel']."</a></td>";
                    echo "</tr>";
                  }
                  
                ?></table>
                Als Fehlermeldung bekomme folgendes:
                Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Programme\apachefriends\xampp\htdocs\projekt\search.inc.php on line 25
                Can't find FULLTEXT index matching the column list
                Ich sitze jetzt Stundenlang vor dem selben Stück besch...eidenen Quellcode und find den Fehler nicht. Der Suchbegriff wird per Formular per POST übergeben und kommt auch an und wird ins Query geschrieben. Ich weiß auch dass der Suchbegriff vorhanden ist. Also meckert er "irgendwo" wegen dem fetch_array aber was genau will er von mir?

                MFG
                Uri
                Watch me set my pants on fire!!!!!

                Kommentar


                • #9
                  dazu gibts tipps im "stick thread" in diesem forum.

                  Kommentar


                  • #10
                    Original geschrieben von urishima
                    Can't find FULLTEXT index matching the column list
                    Was zum Geier gibt's denn daran nicht zu verstehen?
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Original geschrieben von wahsaga
                      Was zum Geier gibt's denn daran nicht zu verstehen?
                      Gute Frage. Vielleicht wars die Müdigkeit, der Coffeinmangel im Blut, oder ich stand auf der Langen Leitung.

                      nun ja, ein neu anlegen der Tabelle mit den richtigen Optionen für die Betroffenen Spalten hat das Problem beseitigt.

                      War wohl wieder die Sache mit dem Wald und den vielen Bäumen.
                      Watch me set my pants on fire!!!!!

                      Kommentar

                      Lädt...
                      X