Ahib De La Ragon: MYSQL Match - Against und das charset Problem

Liebe MYSQL Freunde,

ich muste meinen Server neu aufsetzten und habe von einer älteren MYSQL Version auf Apache/2.0.53 (Linux/SUSE)Apache API Version 20020903 geweckselt.

Früher habe ich meine Match Anfragen an die DB so gestartet:
SELECT * from irgendwo where MATCH (irgentwas) AGAINST ('+$das* +$unddies*' IN BOOLEAN MODE)

Die DB war erstellt so:
CREATE TABLE blabla
(
.
.
.
) TYPE=MyISAM;

Zu meinem Problem:
Es wird in der neuen Version (siehe oben) in der Suche zwischen Gross und kleinbuchstaben unterschieden, was die folge hat, dass nun  nicht mehr alle Ergebnisse in einer Suche erscheinen.

Meine Lösungsversuche:
Nach Recherche habe ich herrausgefunden das nun in der aktuellen Version ein bestimmter Zeichensatz und Kollationentyp eingestellt werden muss, habe da auch schon so einige ausprobiert, jedoch ohne Erfolg.

Hat jemand schon einmal ein selbes Problem gehabt oder weiss was zu tuhen ist??

Über eine Antwort würde ich mich sehr freuen ;-)

  1. hi,

    Es wird in der neuen Version (siehe oben) in der Suche zwischen Gross und kleinbuchstaben unterschieden, was die folge hat, dass nun  nicht mehr alle Ergebnisse in einer Suche erscheinen.

    http://dev.mysql.com/doc/refman/4.1/en/case-sensitivity.html

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. hi,

      Es wird in der neuen Version (siehe oben) in der Suche zwischen Gross und kleinbuchstaben unterschieden, was die folge hat, dass nun  nicht mehr alle Ergebnisse in einer Suche erscheinen.

      http://dev.mysql.com/doc/refman/4.1/en/case-sensitivity.html

      Besten Dank für die schnelle Hilfe, in diese Richtung hab ich auch schon mal gedacht ;-)

      Leider haben Test 1 und Test 2 keine Änderung in der Ergebnisssuche gebracht.
      Test 1:
      ALTER DATABASE xy DEFAULT CHARACTER SET latin1 COLLATE latin1_bin
      Test 2:
      ALTER DATABASE xy DEFAULT CHARACTER SET latin1 COLLATE latin1_general_cs

      .. Desweiteren habe ich die Kollation in der Tabelle und in den Spalten überprüft ;-) und ebenso auf latin1_bin & latin1_general_cs geprüft, leider keine besserung der Ergebnisse in sicht.
      Hab ich was vergessen?

      gruß,
      wahsaga

      1. .. Desweiteren habe ich die Kollation in der Tabelle und in den Spalten überprüft ;-) und ebenso auf latin1_bin & latin1_general_cs geprüft, leider keine besserung der Ergebnisse in sicht.

        Weiß leider nicht, was latin1_bin ist. Aber latin1_general_cs ist case sensitiv. Da wird auf Groß-/Kleinschreibung geachtet. Wenn dann wäre latin1_general_ci angebracht.

        Jens

        1. .. Desweiteren habe ich die Kollation in der Tabelle und in den Spalten überprüft ;-) und ebenso auf latin1_bin & latin1_general_cs geprüft, leider keine besserung der Ergebnisse in sicht.

          Weiß leider nicht, was latin1_bin ist. Aber latin1_general_cs ist case sensitiv. Da wird auf Groß-/Kleinschreibung geachtet. Wenn dann wäre latin1_general_ci angebracht.

          Jens

          latin1_bin ist binär und kommt für mich warscheinlich eh nicht in betracht.
          Jetzt habe ich alle Spalten, Tabellen auf latin1_general_ci abgeändert und in meine DB die Überhänge automatisch optimieren lassen. Jetzt hab ich den Salat^^ es werden keine Ergebisse mehr geliefert
          Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

          muss ich in mein
          SELECT * from irgendwo where MATCH (irgentwas) AGAINST ('+$das* +$unddies*' IN BOOLEAN MODE) noch iregendwas beachten oder nachtragen??

          1. hi,

            Jetzt hab ich den Salat^^ es werden keine Ergebisse mehr geliefert
            Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

            Also trat vorher ein Fehler auf.

            Also debugge vernünftig, und frage nach, welcher es war - mysql_error().

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. hi,

              Jetzt hab ich den Salat^^ es werden keine Ergebisse mehr geliefert
              Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

              Also trat vorher ein Fehler auf.

              Also debugge vernünftig, und frage nach, welcher es war - mysql_error().

              gruß,
              wahsaga

              Nochmals besten Dank für deine Ratschläge:
              Du hast recht gehabt es trat vorher ein Fehler auf, dennoch werden die ergebnisse der Match abfrabe noch immer in Gross und Kleinbuchstaben unterschieden.
              Mich fragt sich ob nicht etwas gans simples daran Schuld ist.
              Im Header hab ich noch einen Metertag stehen, der dürfte denke ich nicht schaden oder?
              <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

              Muss vielleicht noch eine kleinigkeit in die Matchabfrage rein?

              besten Dank
              nochmals an alle die das Problem zu Lösen versuchen
              Ahib

  2. Hallo,

    Nach Recherche habe ich herrausgefunden das nun in der aktuellen Version ein bestimmter Zeichensatz und Kollationentyp eingestellt werden muss, habe da auch schon so einige ausprobiert, jedoch ohne Erfolg.

    Die Namen der Kollationstypen geben dir Aufschluss darüber, ob sie groß/klein unterscheiden. Das _ci am Ende steht für case insensitive (groß oder klein ist egal), cs für case sensitive (ist nicht egal).

    Andere (IMHO bessere) Möglichkeit: beim Vergleich die Funktion UPPER() oder LOWER() benutzen. Damit wird der gesamte Text _für den Zeitpunkt des Vergleichs_ zu großen bzw. kleinen Buchstaben konvertiert. Wenn das auf beiden Seiten des Vergleichs geschiet, ist der Zeichensatz also egal.

    Jens

    1. hi,

      Andere (IMHO bessere) Möglichkeit: beim Vergleich die Funktion UPPER() oder LOWER() benutzen. Damit wird der gesamte Text _für den Zeitpunkt des Vergleichs_ zu großen bzw. kleinen Buchstaben konvertiert. Wenn das auf beiden Seiten des Vergleichs geschiet, ist der Zeichensatz also egal.

      Das bringst du nur dem Fulltext-Index schlecht bei ...

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
    2. Hallo,

      Nach Recherche habe ich herrausgefunden das nun in der aktuellen Version ein bestimmter Zeichensatz und Kollationentyp eingestellt werden muss, habe da auch schon so einige ausprobiert, jedoch ohne Erfolg.

      Die Namen der Kollationstypen geben dir Aufschluss darüber, ob sie groß/klein unterscheiden. Das _ci am Ende steht für case insensitive (groß oder klein ist egal), cs für case sensitive (ist nicht egal).

      Danke auch Dir der schnellen Antwort.
      Ich habe  nun alles auf ci gestellt.
      => Leider ist immer noch die Beachtung der Gross und kleinschrift vorhanden, liegt es vieleicht daran das ich nur eine Spalte einer Tabelle auf ci gesetzt,? mein match aber auch in anderen Spalten sucht?
      Ich teste gerade mit einem Wort die nur in der Spalte mit den Bundelländern ist, also dürften die anderen Spallten ja eh keine Rolle spielen oder muss ich die auch alle auf ci stellen?

      Andere (IMHO bessere) Möglichkeit: beim Vergleich die Funktion UPPER() oder LOWER() benutzen. Damit wird der gesamte Text _für den Zeitpunkt des Vergleichs_ zu großen bzw. kleinen Buchstaben konvertiert. Wenn das auf beiden Seiten des Vergleichs geschiet, ist der Zeichensatz also egal.

      Jens

      1. hi,

        Ich habe  nun alles auf ci gestellt.
        => Leider ist immer noch die Beachtung der Gross und kleinschrift vorhanden, liegt es vieleicht daran das ich nur eine Spalte einer Tabelle auf ci gesetzt,? mein match aber auch in anderen Spalten sucht?

        Möglich.

        Und zum anderen bin ich nicht sicher, ob das Ändern einer Collation auch zu einem Neuaufbau des Fulltext-Index' führt - ggf. also mal probieren, diesen nach der Änderung noch mal neu anlegen zu lassen.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. hi,

          Ich habe  nun alles auf ci gestellt.
          => Leider ist immer noch die Beachtung der Gross und kleinschrift vorhanden, liegt es vieleicht daran das ich nur eine Spalte einer Tabelle auf ci gesetzt,? mein match aber auch in anderen Spalten sucht?

          Möglich.

          Und zum anderen bin ich nicht sicher, ob das Ändern einer Collation auch zu einem Neuaufbau des Fulltext-Index' führt - ggf. also mal probieren, diesen nach der Änderung noch mal neu anlegen zu lassen.

          Was meist du damit??
          Gruss Ahib

          gruß,
          wahsaga

          1. hi,

            zitiere bitte vernünftig - das, worauf du dich konkret beziehst, und nicht immer das komplette Vorposting.

            Und zum anderen bin ich nicht sicher, ob das Ändern einer Collation auch zu einem Neuaufbau des Fulltext-Index' führt - ggf. also mal probieren, diesen nach der Änderung noch mal neu anlegen zu lassen.

            Was meist du damit??

            Das, was da steht:

            Erst Collation einstellen, dann Suchindex noch mal neu anlegen lassen.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }