selim: MATCH - AGAINST - Volltextsuche

Hallo zusammen,

ich habe einen Fulltextindex wie folgt:

CREATE TABLE ideen (
  id int(11) NOT NULL auto_increment,
  bezeichnung varchar(255) NOT NULL default '',
  beschreibung text NOT NULL,
  branche varchar(255) NOT NULL default '',
  gesucht varchar(255) NOT NULL default '',
  angeboten varchar(255) NOT NULL default '',
  PRIMARY KEY  (id),
  FULLTEXT KEY bezeichnung (bezeichnung,beschreibung,branche,gesucht,angeboten)
) ENGINE=MyISAM;

Wenn ich jetzt z.B.:
SELECT * FROM ideen WHERE MATCH(bezeichnung,beschreibung,branche,gesucht,angeboten) AGAINST('Suchbegriff')

klappt alles wunderbar.

Wenn ich aber nur in einem Feld suchen möchte auf diese Art:
SELECT * FROM ideen WHERE MATCH(bezeichnung) AGAINST('Suchbegriff')

dann bekomme ich die Fehlermeldung:
"Can't find FULLTEXT index matching the column list"

Was mache ich falsch? Hat da jemand ne Ahnung?

Vielen Dank für jede Hilfe,
Selim

  1. hi,

    Wenn ich aber nur in einem Feld suchen möchte auf diese Art:
    SELECT * FROM ideen WHERE MATCH(bezeichnung) AGAINST('Suchbegriff')

    dann bekomme ich die Fehlermeldung:
    "Can't find FULLTEXT index matching the column list"

    Du hast keinen Volltext-Index angegeben, dessen Definition mit der bei MATCH angegebenen Spaltenliste übereinstimmt.

    gruß,
    wahsaga

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

      Du hast keinen Volltext-Index angegeben, dessen Definition mit der bei MATCH angegebenen Spaltenliste übereinstimmt.

      aber wie mache ich das denn?
      Ich dachte das steht in der Tabelle alles unter FULLTEXT.
      Oder?

      1. hi,

        Du hast keinen Volltext-Index angegeben, dessen Definition mit der bei MATCH angegebenen Spaltenliste übereinstimmt.
        aber wie mache ich das denn?

        Du definierst einen Volltext-Index für genau die Spalten, in denen du suchen willst, und gibst dann genau diesen auch an.

        Ich dachte das steht in der Tabelle alles unter FULLTEXT.
        Oder?

        Was meinst du damit?

        gruß,
        wahsaga

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

          soll das dann so aussehen: ?

          CREATE TABLE ideen (
            id int(11) NOT NULL auto_increment,
            bezeichnung varchar(255) NOT NULL default '',
            beschreibung text NOT NULL,
            branche varchar(255) NOT NULL default '',
            gesucht varchar(255) NOT NULL default '',
            angeboten varchar(255) NOT NULL default '',
            PRIMARY KEY  (id),
            FULLTEXT KEY felder (bezeichnung,beschreibung,branche,gesucht,angeboten),
            FULLTEXT KEY bezeichnung,
            FULLTEXT KEY beschreibung,
            FULLTEXT KEY branche,
            FULLTEXT KEY gesucht,
            FULLTEXT KEY angeboten
          ) ENGINE=MyISAM;

          Ist das so richtig?

          Herzlichen Dank,
          Selim

          1. Ist das so richtig?

            Für den Fall, dass du sowohl bezeichnung, beschreibung, branche, gesucht und angeboten jeweils einzeln bzw. alle felder insgesamt durchsuchen können möchtest ist das richtig. je nach zahl deiner datensätze wird er aber eine nicht unerhebliche größe erreichen was das einfügen und ändern ggf. sehr verlangsamen wird.