Kein Ergebniss auf eine Anfrage - MySQL

mkoeni1

Erfahrenes Mitglied
Hallo Leute,


ich habe eine MySQL-Datenbank in der ein Konzert der Gruppe Ich + Ich gespeichert ist.

PHP:
| products | CREATE TABLE `products` (
  `id` int(11) NOT NULL auto_increment,
  `title` varchar(255) NOT NULL default '',
  `kategorie` varchar(30) default NULL,
  `description` text NOT NULL,
  `location` text NOT NULL,
  `date_from` date NOT NULL default '0000-00-00',
  `date_to` date NOT NULL default '0000-00-00',
  `time` varchar(255) NOT NULL default '',
  `price_text` varchar(255) default NULL,
  `price` int(11) NOT NULL default '0',
  `low_price` int(11) NOT NULL default '0',
  `order_type` enum('direct','callback') NOT NULL default 'direct',
  `discount` enum('yes','no') NOT NULL default 'no',
  `active` enum('yes','no') NOT NULL default 'yes',
  `image` varchar(32) NOT NULL default '',
  `thumb` varchar(32) NOT NULL default '',
  `created_at` datetime NOT NULL default '0000-00-00 00:00:00',
  `last_modified` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  PRIMARY KEY  (`id`),
  FULLTEXT KEY `title` (`title`,`description`,`location`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |


Der title ist "Ich + Ich".

Meine SQL-Abfrage sieht folgend aus:
PHP:
select id,title,kategorie,description,location,date_format(date_to, '%d.%m.%Y') date_to, if(date_from<date_to,date_format(date_from, '%d.%m.%Y'),null) date_from,date_from org_date_from,time,price_text,price,low_price,order_type,discount,created_at,image,thumb,active from products WherE 1 and  MATCH (title,description,location,kategorie,discount) AGAINST ('%Ich%' IN BOOLEAN MODE);


Jetzt findet er mir keinen Eintrag. Wie kann das sein? Weiß hier jemand einen guten Rat/Tipp. Bei anderen Konzerten zb. Schneider findet er mir einen Eintrag (title = "Martin Schneider")
Ich bedanke mich schon mal vorweg :)

Gruß Matthias
 
Zuletzt bearbeitet:
Moin mkoeni1,

die Ursache dafür, dass mySQL bei der Suche nach "Schneider" irgendetwas findet,muss wohl ein Programmierfehler sein.
Eigentlich müsste Dir mySQL kalt lächelnd die noch kältere Schulter oder besser einen Syntax-Fehler zeigen:
- "MATCH (title,description,location,kategorie,discount) AGAINST .." --> im FULLTEXT KEY sind aber nur die ersten drei Felder. Feld "kategorie" ist sogar NULLABLE und mit Default NULL. Selbst wenn es im BOOLEAN MODE erlaubt ist (nach dem Motto:"Dann dauert es halt 'n Tach länger..") - Du solltest die beiden Felder "kategorie" und "discount" bei der Suche nach Interpreten streichen.

Warum "Ich+Ich" bei einer FULLTEXT-Suche nach 'Ich' nicht gefunden wird, lässt sich einfacher beantworten.
Die Mindestlänge einer (suchbaren) Zeichenkette muss 4 Zeichen lang sein. (Nicht nur 4 Byte, sondern 4 aufeinanderfolgende Zeichen).

Noch zwei Anmerkungen:
a) die %-Zeichen rund um '%Ich%' transportieren genauso viel Information wie eine Einschätzung der Konjunkturaussichten durch die F.D.P. Also besser entsorgen und ganz abgewöhnen. Die Prozentzeichen meine ich.

b) Falls Du gehofft haben solltest, dass mit der Suche nach 'Ich' nur die Schreibweise Grosses i, kleines c, kleines h gefunden werden würde - njet.
Unterscheidung nach Klein/Grossschreibung nur bei Zeichensatz "latin1_bin" (oder einem anderen ..._bin_Satz)

Grüße
Biber
 
Zuletzt bearbeitet:
Zurück