Sascha: Benötige Hilfe für Volltextsuche in MySQL

Hallo,

also ich möchte gerne eine Volltextsuchfunktion in mein Webprojekt einbauen.

Ich habe meine Daten in einer MySQL-Datenbank drin. Die Webprojekt ist in HTML und PHP4 gehalten.

Laut phpinfo unter PHP4 bekomme ich folgende Daten:

PHP Version 4.0.6
MySQL 3.23.32 Client API Version

Meine Datenbank manage ich per phpmyadmin 2.1.0

Nun habe ich in der FAQ:
http://www.koehntopp.de/php/faq-database_mysql.html#database_mysql-19
gelesen, das man zuerst mal folgendene Befehlszeile eingeben muß, um den Index anzulegen:

ALTER TABLE downloadprogramme ADD FULLTEXT (textspalte);

wobei downloadprogramme der Tabellenname von mir ist.
Nun nach Eingabe von dieser SQL-Befehlszeile in dem entsprechenden
Formularfeld in phpmyadmin bekomme ich nach ausführung folgende
Fehlermeldung angezeigt:

Fehler
SQL-Befehl:

ALTER TABLE downloadprogramme ADD FULLTEXT (textspalte);
MySQL meldet: You have an error in your SQL syntax near '(textspalte);' at
line 1

Kann mir jemand verraten, was ich bei der ganzen Sache da falsch mache?

Ich würde mich sehr freuen, wenn mir jemand weiterhelfen könnte.

Im voraus besten Dank.

Mfg.

Sascha

  1. Hi,

    PHP Version 4.0.6
    MySQL 3.23.32 Client API Version

    nun dann hast schon mal die besten Vorraussetzungen, Fulltext funtkioniert ab MySQL 3.23.23

    ALTER TABLE downloadprogramme ADD FULLTEXT (textspalte);
    MySQL meldet: You have an error in your SQL syntax near '(textspalte);' at
    line 1

    Ich habs zwar selber nicht ausprobiert, aber laut MySQL-Doku mußt du im Parameter (textspalte) die Spalten angeben, für den der Fulltext-Index angelegt werden soll, also z.B.:

    ALTER TABLE downloadprogramme ADD FULLTEXT (Name,Beschreibung,...)

    nähere Info siehe http://www.mysql.com/doc/M/y/MySQL_full-text_search.html

    Ich hoffe, das wars.

    liebe gruesse aus oesterreich
     Martin

    1. Hallo,

      erstmal danke für die Antwort.

      Also ich hab mal mittlerweile es weiter versucht, aber bin einfach nicht weitergekommen.

      habe zum Beispiel mal folgendes ausprobiert:

      ALTER TABLE downloadprogramme ADD FULLTEXT (beschreibung);

      bzw.

      ALTER TABLE downloadprogramme ADD FULLTEXT (titel);

      in phpmyadmin, bekomme aber selbe Fehlermeldung wie unten erwähnt!
      Was mach ich denn hierbei falsch? Meine Tabelle heißt downloadprogramme und es gibt auch Felder die titel und beschreibung heißen! Also daran dürfte es ja wohl nicht liegen?

      Ich würde mich sehr freuen, wenn mir jemand mal aus diesem Forum helfen könnte.

      Im voraus besten Dank.

      Mfg.

      Sascha

      Hi,

      PHP Version 4.0.6
      MySQL 3.23.32 Client API Version

      nun dann hast schon mal die besten Vorraussetzungen, Fulltext funtkioniert ab MySQL 3.23.23

      ALTER TABLE downloadprogramme ADD FULLTEXT (textspalte);
      MySQL meldet: You have an error in your SQL syntax near '(textspalte);' at
      line 1

      Ich habs zwar selber nicht ausprobiert, aber laut MySQL-Doku mußt du im Parameter (textspalte) die Spalten angeben, für den der Fulltext-Index angelegt werden soll, also z.B.:

      ALTER TABLE downloadprogramme ADD FULLTEXT (Name,Beschreibung,...)

      nähere Info siehe http://www.mysql.com/doc/M/y/MySQL_full-text_search.html

      Ich hoffe, das wars.

      liebe gruesse aus oesterreich
      Martin

      1. Hallo Sascha,

        ALTER TABLE downloadprogramme ADD FULLTEXT (beschreibung);
        bzw.
        ALTER TABLE downloadprogramme ADD FULLTEXT (titel);

        Ich denke, ich hatte einen kleinen Fehler in meinem Beispiel - die Syntax für ALTER in deinem Fall lautet nämlich:

        ALTER TABLE tbl_name ADD FULLTEXT [index_name] (index_col_name,...)

        Somit mußt du ausser den mittels FULLTEXT zu durchsuchenden Feldern auch einen INDEX_NAMEN definieren, also etwa so zB

        ALTER TABLE downloadprogramme ADD FULLTEXT vollsuche (Titel,Beschreibung)

        Ich hoffe das hilft.

        liebe gruesse aus oesterreich
         Martin

        P.S.: Wichtig für den FULLTEXT-Index (aus der MySQL-Spec): FULLTEXT indexes can be created from VARCHAR and TEXT columns

        1. Hallo Martin,

          ich habs noch einmal ausprobiert mit:

          ALTER TABLE downloadprogramme ADD FULLTEXT vollsuche (Titel,Beschreibung)

          bzw.

          ALTER TABLE downloadprogramme ADD FULLTEXT vollsuche (Titel,Beschreibung);

          beides führte wie gehabt zur folgenden Fehlermeldung:

          Fehler
          SQL-Befehl:

          ALTER TABLE downloadprogramme ADD FULLTEXT vollsuche (Titel,Beschreibung);

          MySQL meldet: You have an error in your SQL syntax near 'vollsuche (Titel,Beschreibung);' at line 1

          Ich hab da echt langsam keine Ahnung mehr, was ich dabei falsch mache! Also irgendwas stimmt hier nicht - ist die Frage nur was?!
          Die Spalten/Felder titel und beschreibung sind vom Type: text

          Viele Grüße

          Sascha

          Hallo Sascha,

          ALTER TABLE downloadprogramme ADD FULLTEXT (beschreibung);
          bzw.
          ALTER TABLE downloadprogramme ADD FULLTEXT (titel);

          Ich denke, ich hatte einen kleinen Fehler in meinem Beispiel - die Syntax für ALTER in deinem Fall lautet nämlich:

          ALTER TABLE tbl_name ADD FULLTEXT [index_name] (index_col_name,...)

          Somit mußt du ausser den mittels FULLTEXT zu durchsuchenden Feldern auch einen INDEX_NAMEN definieren, also etwa so zB

          ALTER TABLE downloadprogramme ADD FULLTEXT vollsuche (Titel,Beschreibung)

          Ich hoffe das hilft.

          liebe gruesse aus oesterreich
          Martin

          P.S.: Wichtig für den FULLTEXT-Index (aus der MySQL-Spec): FULLTEXT indexes can be created from VARCHAR and TEXT columns

          1. Hallo Sascha,

            ich habs gerade bei einer meiner Tabellen ausprobiert mit folgendem Beispiel:

            ALTER TABLE kleinanzeigen ADD FULLTEXT vollsuche (email,betreff)

            hat funktioniert und hat auch brav den Index angelegt - warum das bei dir nicht geht kann ich dir leider auch nicht sagen.

            liebe gruesse aus oesterreich
             Martin

            1. Hallo Sascha,

              [...] hat funktioniert und hat auch brav den Index angelegt - warum das bei dir nicht geht kann ich dir leider auch nicht sagen.

              Unter http://www.mysql.com/doc/C/R/CREATE_INDEX.html  steht:
              <cite>
              FULLTEXT indexes can index only VARCHAR and TEXT columns, and only in MyISAM tables.
              </cite>

              Vielleicht liegts daran.

              Probier mal, eine neue Tabelle mit Type MyISAM anlegen und bei dieser einen Index generieren.

              Naja, kann ja sein.

              Grüße
                Klaus