[MySQL 4.1] Suchbegriffe finden

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

  • [MySQL 4.1] Suchbegriffe finden

    Hi, ich hab auf meine Homepage (www.alla-entertainment.de) eine Suchfunktion eingebaut.
    Es wird in einer MySql Datenbank nach dem egriff in der Spalte 'Keywords' gesucht. Nun steht da z.B. drinne: "Produkte, AE, Games, Rome, Allawars, ALLA, Entertainment, Download, Informationen" als Suchbegriffe. Wenn man aber z.B. in das Suchfeld "Rome Allawars Download eingibt, dann wird kein Ergebniss geliefert. Kann man das irgendwie mit einer anderen Abfrage machen? Bis jetzt ist sie:
    PHP-Code:
    "SELECT * FROM `Suchen` WHERE `keywords` LIKE '%" $Keyword "%'" 
    Danke im Vorraus

  • #2
    Eine Möglichkeit (vielleicht nicht die beste, da mysql das vielleicht mit internen Funktionen besser lösen kann) wäre, den Suchstring zu exploden (Trennzeichen ' ' usw.) und dann die Abfrage dynamisch zu generieren mit OR Operatoren, sodass alle angezeigt werden, die eines der Keywörter enthalten...

    Kommentar


    • #3
      http://dev.mysql.com/doc/refman/5.1/...xt-search.html

      Kommentar


      • #4
        Also such ich den String nach einem Leerzeichen ab, splitte ab jedem Leerzeichen und setz die hintereinander mit Kommas wieder ein.
        PHP-Code:
        "SELECT * FROM `Suchen` WHERE `keywords` MATCH (".$Keyword[1], $Keyword[2].")"
        Ich hab das mit dem AGAINST noch nicht so verstanden.
        Muss bei mir das so aussehen? AGAINST(Datenbankname[IN NATURAL LANGUAGE MODE]) ?
        Danke im Vorraus

        Kommentar


        • #5
          Die verlinkte Seite enthält doch alle Informationen, was hast du da nicht verstanden?

          Kommentar


          • #6
            Full-text searching is performed using MATCH() ... AGAINST syntax. MATCH() takes a comma-separated list that names the columns to be searched. AGAINST takes a string to search for, and an optional modifier that indicates what type of search to perform. The search string must be a literal string, not a variable or a column name.
            Nochmal das Wesentliche...

            Bei MATCH gibst du `keywords`an und bei AGAINST das Suchwort...

            Kommentar


            • #7
              Jetzt gehts nimmer
              PHP-Code:
              mysql_query("SELECT * FROM `Suchen` MATCH (`keywords`) AGAINST (".$_GET["query"]."[IN NATURAL LANGUAGE MODE])") or die(mysql_error()); 
              ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MATCH (`keywords`) AGAINST (info[IN NATURAL LANGUAGE MODE])' at line 1

              P.S. Die query war "info"

              Kommentar


              • #8
                Den Inhalt der GET-Variable in einfache Anführungszeichen setzen.

                Kommentar


                • #9
                  Ne, klappt leider nicht, dieselbe Fehlermeldung nur mit Anführungszeichen.

                  Kommentar


                  • #10
                    Dann noch die Eckigen Klammern. Hab ich bei "IN XYZ MODE" noch nie gesehen, gehören die da ganz bestimmt hin?

                    Kommentar


                    • #11
                      So sieht das ganze jetzt aus:
                      PHP-Code:
                      SELECT FROM `SuchenWHERE MATCH (`keywords`) AGAINST ('".$_GET["query"]."'IN NATURAL LANGUAGE MODE
                      Und das ist die Fehlermeldung:
                      You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NATURAL LANGUAGE MODE)' at line 1

                      Kommentar


                      • #12
                        Leerzeichen nach dem Keyword?

                        Kommentar


                        • #13
                          Klappt auch nicht, fenau dieselbe Fehlermeldung

                          Kommentar


                          • #14
                            Was für eine mySQL-Version ist das? 4.x? Gibts NATURAL LANGUAGE MODE da überhaupt schon?

                            Kommentar


                            • #15
                              4.1.22

                              Kommentar

                              Lädt...
                              X