Hallo zusammen!
Ich schreibe gerade an einer kleinen Anwendung, mit der ich Webseiten die mich interessieren Archivieren kann. In diesem Archiv, möchte ich eine Suche ähnlich wie Google realisieren. Bei mehreren Suchbergriffen, sollen hier die Datensätze als erstes gelistet werden, welche die meisten Wörter aus dem Suchtext vorkommen. Die Tabelle sieht folgendermaßen aus:
CREATE TABLE IF NOT EXISTS `web` (
`titel` varchar(80) COLLATE utf8_bin NOT NULL,
`url` varchar(250) COLLATE utf8_bin NOT NULL,
`text` longtext COLLATE utf8_bin NOT NULL,
`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`id` int(11) NOT NULL,
`accessid` int(11) NOT NULL,
`mandantcreateid` int(11) NOT NULL,
`mandantchangeid` int(11) NOT NULL,
`mandantdeleteid` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Aktuell durchsuche ich so:
Select id, titel, text where text like '%suchbegriff1%' or text like '%suchbegriff2%' or titel like '%suchbegriff1%' or titel like '%suchbegriff2%';
Hier bekomme ich allerdings das Ergebnis unsortiert. Wie kann man die gelieferten Datensätze so sortieren, dass sie nach der Anzahl der Treffer absteigend geliefert werden?
Danke schon einmal für die Unterstützung!
Michael
Ich schreibe gerade an einer kleinen Anwendung, mit der ich Webseiten die mich interessieren Archivieren kann. In diesem Archiv, möchte ich eine Suche ähnlich wie Google realisieren. Bei mehreren Suchbergriffen, sollen hier die Datensätze als erstes gelistet werden, welche die meisten Wörter aus dem Suchtext vorkommen. Die Tabelle sieht folgendermaßen aus:
CREATE TABLE IF NOT EXISTS `web` (
`titel` varchar(80) COLLATE utf8_bin NOT NULL,
`url` varchar(250) COLLATE utf8_bin NOT NULL,
`text` longtext COLLATE utf8_bin NOT NULL,
`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`id` int(11) NOT NULL,
`accessid` int(11) NOT NULL,
`mandantcreateid` int(11) NOT NULL,
`mandantchangeid` int(11) NOT NULL,
`mandantdeleteid` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Aktuell durchsuche ich so:
Select id, titel, text where text like '%suchbegriff1%' or text like '%suchbegriff2%' or titel like '%suchbegriff1%' or titel like '%suchbegriff2%';
Hier bekomme ich allerdings das Ergebnis unsortiert. Wie kann man die gelieferten Datensätze so sortieren, dass sie nach der Anzahl der Treffer absteigend geliefert werden?
Danke schon einmal für die Unterstützung!
Michael