Hallo Daniela,
das waren sehr aufschlußreiche Ausführungen. Dankeschön.
Ich habe die Schlüsselwörter absichtlich nicht ausgelagert da ich eigentlich nur Nachteile darin sehe. Ich brauche einen zusätzlichen Join.
Die Idee, Suchwort und Verknüpfung in eine Tabelle zu legen finde ich gut, mach ich auch :-)
Ein paar Einzelheiten habe ich aber nicht verstanden:
Part_Keywd: Hier sind alle möglichen Teilwörter für ein Schlüsselwort gespeichert die eine bestimmte Mindestlänge haben.
|----------------------|
| PartKeywd | Keywd |
|----------------------|
| ndreas | Andreas |
| dreas | Andreas |
| reas | Andreas |
...
|----------------------|
Ich speichere nur Wörter bei denen der Anfang fehlt, Wörter deren Ende unbekannt ist, suche ich mit like 'xxx%'.
Man kann bei Dir ja 'eigenständige Worte' ankreuzen. Wird dann nur in 'Keywd_Item' gesucht? Und angenommen ich suche nach 'ndreas' ohne 'eigenständige Worte' anzuklicken. Suchst Du dann erst in 'Part_Keywd' und das zugehörige Keywd dann in 'Keywd_Item'? Also etwa so?:
SELECT Itemid
From Keywd_Item, Part_Keywd
WHERE Keywd_Item.Keywd = Part_Keywd.Keywd
AND Part_Keywd.PartKeywd = 'ndreas'
Aber was machst Du dann (falls es denn so ist), wenn 'Andreas' ohne 'eigenständige Worte' gesucht wird. Das kommt ja in PartKeywd gar nicht vor. Woher weißt Du, ob es als Wortanfang (WHERE Keywd_Item.Keywd LIKE 'Andreas%') oder als Wortende gesucht werden muß (WHERE Part_Keywd.PartKeywd = 'Andreas')?
Nach dem Indizieren können keine Wörter mehr entfernt werden da dann ein erneutes indizieren notwendig wäre.
was machst Du denn, wenn ein Posting gelöscht wird und es als einziges ein indiziertes Wort enthielt?
Hier leider gar nichts verstehn:
Dem ganzen ist noch eine Volltextsuche nachgelagert um auch Phrasen finden zu können. Dazu besitzt jede Sektion ein File indem die einzelnen Einträge zu finden sind.
Was für Einträge stehen da drin?
Jedes Item hat eine Startposition in diesem File sowie eine Länge die beide in der Tabelle Item gespeichert sind.
Wenn jetzt eine Phrase in ihre Einzelwörter zerlegt auf ein Item zutrifft,...
also, Du suchst alle Wörter als ganze Wörter und wenn alle gefunden werden _und_ alle Treffer auf mindestens ein gemeinsames Item verweisen (Itemid)
...wird dieser Text ausgelesen und mit der gesammten Phrase verglichen.
der Text der gefunden Itemid. Ist das so richtig?
Aber was für Einträge stehen in diesem File der Sektion?
Gruß, Andreas
P.S: Ich empfehle einen Blick in die News
ja, ich war auf der neuen. Also 'apperlot' (als Teil von 'Sapperlot') kann man jetzt nicht mehr finden. Ist das nun Absicht?