MySQL Volltextsuche

mkoeni1

Erfahrenes Mitglied
Hallo liebe Datenbänkler,


ich versuche mit einem Match ... Against Artikel aus einem System zu bekommen.
Leider gibt mir folgender Select auch viele "falsche", bzw. berücksichtigt Artikel die aktueller sind als die gefundenen nicht obwohl diese ein Kriterium im Text halten.

PHP:
select a.title from artikel a left join artikel_doubletten ad on a.id = ad.artikel_id and a.catch_id = ad.catch_id where match (a.title,a.content,a.teaser) against ('+"fc bayern" "+bayern m*nchen" -"*Fussballfrauen*" -"*Frauenfussball*" -"2. Mannschaft" -"Ergebnisse und Tabelle Regionalliga S*" -"Tagesergebnisse der Oddset-Spiele vom" -"Ergebnisse und Tabelle Herren-Bundesliga" -"Statistik der 1. Bundesliga" -"Ergebnisse BBL-Pokal" -"Spr* vom" -"Extra Fu*ball-Bundesliga" -"Die Torsch*tzenliste der" -"Die Zuschauertabelle der"  -"Die wichtigsten Termine vom" -"Sportnotizen" -"Sport in K*rze" -"Kurz berichtet"' in boolean mode) and a.timedate > date_sub(NOW(), INTERVAL 40 DAY) and a.active = 'yes' and now() between a.publish and a.expire group by a.title limit 15;

Sind die bei einem Match ... against eingesetzen Platzhalter in Wörtern mit * richtig angegeben?
Bekämpfen sich denn die Suchkriterien zB. +"fc bayern" und zB. -"2. Mannschaft" sich in der Suche dahin gehend gegenseitig nicht, weil zum einen das "+" Kriterium gefunden wurde und das "-" Kriterium auch und er somit Nichts findet.

Meine Tabellen sehen so aus:
PHP:
CREATE TABLE `artikel_doubletten` (
  `id` int(11) NOT NULL auto_increment,
  `artikel_id` bigint(20) NOT NULL,
  `catch_id` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

PHP:
CREATE TABLE `artikel` (
  `id` bigint(20) NOT NULL auto_increment,
  `stempel` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `catch_id` int(11) NOT NULL default '0',
  `title` tinytext NOT NULL,
  `keywords` text,
  `location` varchar(100) NOT NULL default '',
  `source` varchar(10) default NULL,
  `content_start` mediumtext NOT NULL,
  `content` text NOT NULL,
  `active` enum('yes','no') NOT NULL default 'yes',
  `publish` datetime NOT NULL default '0000-00-00 00:00:00',
  `expire` datetime NOT NULL default '0000-00-00 00:00:00',
  `filename` varchar(100) default NULL,
  `mtime` datetime default NULL,
  `priority` int(11) default NULL,
  `timedate` datetime default NULL,
  `msgnum` int(11) default NULL,
  `keyword` varchar(255) default NULL,
  `teaser` text NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `catch_id` (`catch_id`),
  KEY `active` (`active`),
  KEY `publish` (`publish`,`expire`),
  KEY `publish_2` (`publish`),
  KEY `expire` (`expire`),
  KEY `mtime` (`mtime`),
  KEY `filename` (`filename`),
  KEY `keyword` (`keyword`),
  KEY `title_2` (`title`(100)),
  FULLTEXT KEY `title` (`title`,`content`,`teaser`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1


Gibt es noch eine Alternative Volltext Suche zu Match ... AGAINST?


Vielen Dank und Gruß
Matthias
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück