Shadow1701
Ensign
- Registriert
- Juli 2012
- Beiträge
- 209
Schönen Nachmittag euch allen.
Ich bin gerade mit einem Suchscript beschäftigt welches Dateien durchsuchen soll welche vorher indiziert wurden. Die Datenbank sieht so aus:
Natürlich gibt es auch Primary, hab das nur abgekürzt....
in SEARCHFILES steht der Pfad zu den TXT und HTML Dateien drinnen.
in SEARCHINDEX stehen alle Wörter welch in den Dateien vorkommen genau EINMAL drinnen. Mit zugeordneter Primärschlüssel ID.
in SEARCHMATCH ist die Information vorhanden welches wort in welcher Datei vorhanden ist.
Die mySQL Abfrage ist diese da:
Das Ergebnis ist jetzt eine Liste mit allen Dateien welche die Wörter "Dampflokomotive" ODER "Schmalspurbahn" enthalten.
Was ich momentan so gar nicht schaffe, ist es eine Liste der Dateien auszugeben, welche die Wörter "Dampflokomotive" UND "Schmalspurbahn" enthalten.
Entweder habe ich hier einen grundlegenden Denkfehler oder wieder eine meiner brühmten Hirnblockaden weil ich es momentan so gar nicht schaffe die SQL Abfrage entsprechend anzupassen.
Kann mir jemand helfen?
Ich bin gerade mit einem Suchscript beschäftigt welches Dateien durchsuchen soll welche vorher indiziert wurden. Die Datenbank sieht so aus:
Code:
--
-- Tabellenstruktur für Tabelle `searchfiles`
--
CREATE TABLE `searchfiles` (
`sfid` int(11) NOT NULL,
`sfcategoryid` int(4) NOT NULL,
`sffile` longtext COLLATE utf8_german2_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_german2_ci;
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `searchindex`
--
CREATE TABLE `searchindex` (
`wordid` int(11) NOT NULL,
`word` char(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `searchmatch`
--
CREATE TABLE `searchmatch` (
`matchid` int(11) NOT NULL,
`filecat` int(4) NOT NULL,
`fileid` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Natürlich gibt es auch Primary, hab das nur abgekürzt....
in SEARCHFILES steht der Pfad zu den TXT und HTML Dateien drinnen.
in SEARCHINDEX stehen alle Wörter welch in den Dateien vorkommen genau EINMAL drinnen. Mit zugeordneter Primärschlüssel ID.
in SEARCHMATCH ist die Information vorhanden welches wort in welcher Datei vorhanden ist.
Die mySQL Abfrage ist diese da:
Code:
SELECT DISTINCT searchfiles.sfid,searchfiles.sfcategoryid,searchfiles.sffile FROM `searchindex` LEFT JOIN `searchmatch` ON (searchindex.wordid=searchmatch.matchid) LEFT JOIN `searchfiles` ON (searchmatch.fileid=searchfiles.sfid) WHERE searchmatch.filecat='0' AND (`word`='Dampflokomotive' OR `word`='Schmalspurbahn');
Das Ergebnis ist jetzt eine Liste mit allen Dateien welche die Wörter "Dampflokomotive" ODER "Schmalspurbahn" enthalten.
Was ich momentan so gar nicht schaffe, ist es eine Liste der Dateien auszugeben, welche die Wörter "Dampflokomotive" UND "Schmalspurbahn" enthalten.
Entweder habe ich hier einen grundlegenden Denkfehler oder wieder eine meiner brühmten Hirnblockaden weil ich es momentan so gar nicht schaffe die SQL Abfrage entsprechend anzupassen.
Kann mir jemand helfen?