Hallo Forum,
ich habe einen aufgeteilten Index. In einer Tabelle stehen die Wörter (unique) mit je einer ID und in der zweiten stehen die Verknüpfungen der WortID zu irgendwelchen Fundstellen.
Wenn ich jetzt einen Stapel neue Wörter indizieren will, muß ich ja nachsehen, welche davon es schon gibt. Die neuen Wörter trage ich dann ein und lass mir die neue ID zurückgeben, von den bereits vorhandenen lese ich die ID zur Weiterbearbeitung aus. Ich brauche also zu allen Wörtern des Textes am Ende eine ID.
Wenn ich aber z.B. 2000 verschiedene Wörter aus einem Text indizieren will, muß ich 2000 Anfragen an die DB stellen:
SELECT ID
FROM worttabelle
WHERE wort = $wort
und bekomme dann eine ID zurück oder trage im negativen Fall das Wort ein...
Oder ich frage _einmal_ mit
SELECT wort, ID
FROM worttabelle
WHERE $wort in('wort1', 'wort2', 'wort3'...)
und bekomme die Liste der schon vorhandenen Wörter mitsamt ID. Dann müßte ich nur noch die neuen Wörter eintragen.
Aber dazu muß ich in PHP die beiden Wortlisten vergleichen. Die DB-Anfrage ist nicht case-senitiv und in PHP kann ich - soweit mir bekannt - direkte Array-Vergleiche auf gemeinsame Elemente nur case-senitiv machen. Für einen case-insentiven Vergleich müßte ich also _jedes_ Element aus _beiden_ Arrays z.B. mit strtolower behandeln und dann vergleichen.
Was ist besser?
Gruß, Andreas
SELFFORUM - hier werden Sie geholfen,
auch in Fragen zu richtiges Deutsch