MATCH - AGAINST - Volltextsuche
selim
- datenbank
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
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
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?
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
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
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.