Aufwand für die Forensuchfunktion
-
Bei größeren Foren frage ich mich wie dort die Suche implementiert ist. Die Beträge sind in einer Datenbank (nehme ich an) gespeichert. Gebe ich in der Suchmaske einen Begriff ein, dann müssen doch die gesamten Beiträge in der Datenbank durchforstet werden. Das ist doch krass aufwändig und ist ziemlich teuer.
Liegen alle Beiträge vielleicht im RAM, dadurch Geschwindigkeitsvorteil?
Wie wird das effizient zB in diesem Forum durchgeführt?
-
TomDaHomm schrieb:
Liegen alle Beiträge vielleicht im RAM, dadurch Geschwindigkeitsvorteil?
Autsch, nein. Viel zu viele Beiträge, viel zu wenig RAM.
Wie wird das effizient zB in diesem Forum durchgeführt?
Siehe zB hier: http://www.phpbbdoctor.com/blog/2007/01/26/how-does-search-work-part-i/
-
Sehr guter Link. Vielen Dank.
-
Liegt dann die Wortliste "phpbb_search_wordlist" wenigstens im RAM? Im Beispiel im Blog sagt der Author, dass seine Schlagworttabelle 172816 Wörter enthält. Das sollte für den RAM doch machbar sein.
Das heißt im Schnitt übrigens, dass es rund 38 Schlagwörter pro Beitrag gibt.
-
Ich habs mal kurz nachgerechnet. Insgesamt bestehen die run 170000 Wörter aus ca 1,5 Mio. Zeichen. Wenn mann nun davon ausgeht, dass ein Zeichen in Java 2 Bytes groß ist. Das würde bedeuten, das diese Tabelle dann ungefähr 24 MB groß wäre.
Sowas würde man dann wohl auch als Hashtable implementieren und im RAM halten um so jeden neuen Beitrag schnell indizieren zu könnnen?