MySQL Suche (Select)

pl_90

Angesehenes Mitglied
Hey...
Ich habe z.B. 6000 Einträge in der MySQL-DB mit Titel, Beschreibung, etc.
Wie kann ich MySQL dazu "zwingen", dass er ALLE Einträge duchsucht und dann die Ergebnisse auf Seiten aufteilt?

Also mit SELECT * FROM tabelle WHERE (titel,beschreibung,url) AGAINST ('suchbegriff' IN BOOLEN MODE) LIMIT x,y werden zwar Einträge durchsucht, aber wenn z.B. neue Seiten dazu kommen, die "bessere" Beschreibungen etc. und "besseres" Ranking haben, als manche anderen in der DB, dann stehen sie trotzdem nicht höher auf der "Ergebnis-Seite / Liste"...

Wie kann man diese Suche realisieren, also mit Ranking bzw. Relevanz?
Hat da jemand eine Idee?

Danke vielmals im Voraus.
 
Du willst also neue Einträge an oberster Stelle stellen ?
Oder Du willst zB. die am meisten Angecklickten , das die an erster Stelle stehen ?

Bei Ersteres wäre es ja mit zB: "Order by Date" möglich.
Wenn Du bei 2. zB. die Hits zählst, dann könnest Du danch die Suche ausgeben, oder ?

Gruß Dirk
 
Hi.. Nein.. also so die Einträge sortieren wie die Suchmaschinen, nach Relevanz oder so, also ein echtes Ranking... :)
 
http://dev.mysql.com/doc/refman/5.1/de/fulltext-search.html
CODE
mysql> SELECT id, body, MATCH (title,body) AGAINST
-> ('Security implications of running MySQL as root') AS score
-> FROM articles WHERE MATCH (title,body) AGAINST
-> ('Security implications of running MySQL as root');


Das Order By score mußt du selbst dazuerfinden ;-)
 
Hi.. Danke Markus..
Ich hab das schon probiert, aber es funktioniert nicht... Deswegen frage ich hier.. Bei mir funktioniert nur mit IN BOOLEAN MODE.. aber wieso nur das, kp.. weiß du vielleicht woran das liegen könnte? bzw. gibt es eine alternative?
 
volltext index erstellen dann klappts auch
wink.gif
 
hab ich auch.. hm.....

die Strucktur ist (MySQL hat das selber erstellt):

CREATE TABLE `MY_TABLE` (
`ID` int(11) NOT NULL auto_increment,
`TOKEN` varchar(50) NOT NULL,
`EROTIK` tinyint(4) NOT NULL default '0',
`TITEL` varchar(255) NOT NULL,
`KEYWORDS` varchar(255) NOT NULL,
`TEXT` longtext NOT NULL,
`META_TEXT` varchar(255) NOT NULL,
`URL` varchar(255) NOT NULL,
`DATUM` datetime default NULL,
PRIMARY KEY (`ID`),
FULLTEXT KEY `TITEL_IDX` (`TITEL`),
FULLTEXT KEY `KEYWORDS_IDX` (`KEYWORDS`),
FULLTEXT KEY `URL_IDX` (`URL`),
FULLTEXT KEY `TEXT_IDX` (`TEXT`),
FULLTEXT KEY `META_TEXT_IDX` (`META_TEXT`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3400;

ist da irgendwie was falsch?
 
Zurück
Oben