Forumsuche -> Verbesserungsvorschläge
-
Yeah, was ich besonders super finde: Es wird bei Threads, welche sich über mehrere Seiten erstrecken, gleich auf die richtige Seite und zum richtigen Beitrag gesprungen. Das ist momentan eine ätzende Sucherei, in >5 Seiten das Schlüsselwort zu finden.
-
Tobias3: Naja, klar gibts mit wenig Daten leicht brauchbare Performance.
Badestrand: phpbb_search_wordlist hat etwas über 1,1 Mio, die phpbb_search_wordmatch hat so um die 32 Mio.
-
Wenn für euch die Daten-Herausgabe OK wäre, du genug Zeit hast und irgendwo ausreichend Webspace findest, wäre es total cool, wenn du diese beiden Tabellen mal als csv dumpen und hosten würdest, dann könnte man (oder wenigstens ich :)) mal ein wenig damit herumexperimentieren.
edit: Um es komfortabler für dich zu machen, musst du nicht mal die Syntax nachschlagen (falls du sie nicht sowieso aus dem Kopf weißt):
SELECT * INTO OUTFILE '/.../wordlist.txt' FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n' FROM phpbb.phpbb_search_wordlist; SELECT * INTO OUTFILE '/.../wordmatch.txt' FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n' FROM phpbb.phpbb_search_wordmatch;
-
Badestrand schrieb:
edit: Um es komfortabler für dich zu machen, musst du nicht mal die Syntax nachschlagen (falls du sie nicht sowieso aus dem Kopf weißt):
Danke, das ist sehr nett, das macht es auf alle Fälle nochmal bequemer.
Aber schreibst Du mal eine Mail an admin@c++.de? Das ist eine Sache, die Marcus entscheiden muss, ist ein wenig heikel…
-
nman schrieb:
Tobias3: Naja, klar gibts mit wenig Daten leicht brauchbare Performance.
Badestrand: phpbb_search_wordlist hat etwas über 1,1 Mio, die phpbb_search_wordmatch hat so um die 32 Mio.
Durch die partiellen Einträge hat der Index von oben 11 057 526 Einträge. Ich kann auch noch alles indexieren, weiß aber nicht, ob das so gut ist, wenn ich hier so viel Traffic erzeuge (wäre allerdings über Nacht...).
Ich weiß halt, dass man mit der orig. MySQL Datenbank nie an die Performance von oben hinkommt - dann nur mit dem MySQL-Fulltext-Search und da kann man wiederum keine Wildcards verwenden.
Gebt mal oben "C java" ein und sucht: Er findet sinnvolle Sachen. (Was man bei der orig. Forensuche nicht behaupten kann.
-
Tobias3 schrieb:
Gebt mal oben "C java" ein und sucht: Er findet sinnvolle Sachen. (Was man bei der orig. Forensuche nicht behaupten kann.
Zumindest nach dem Coloring nicht:
Hallo, ich hoffe es ist hier das richtige Forum, da ich ja von JAVA zu C portieren
will...Ich habe folgenden JAVA code,...
Oder ist das nur ein Färbefehler der Ausgabe, und Du hast in Wirklichkeit die "c" im "ich" gar nicht gefunden
-
Marc++us schrieb:
Tobias3 schrieb:
Gebt mal oben "C java" ein und sucht: Er findet sinnvolle Sachen. (Was man bei der orig. Forensuche nicht behaupten kann.
Zumindest nach dem Coloring nicht:
Hallo, ich hoffe es ist hier das richtige Forum, da ich ja von JAVA zu C portieren
will...Ich habe folgenden JAVA code,...
Oder ist das nur ein Färbefehler der Ausgabe, und Du hast in Wirklichkeit die "c" im "ich" gar nicht gefunden
Die "Wildcards" sind natürlich per default dabei, d.h. das C im ich wird gefunden allerdings nicht so hoch gewertet, wie ein alleinstehendes C.
Ist ja nur logisch. Zuerst kommen die Suchergebnisse mit exakten Ergebnissen, dann mit partiellen Matches. In dem Fall hat halt noch das Suchergebnis mit exaktem Treffer partielle Ergebnisse.
-
Ich weiß ja nicht wie ihr das seht aber ich fände es wichtig, dass man auf diesem Gebiet arbeitet.
Offensichtlich braucht die Suchfunktion viel CPU-Power sonst würden bekannte Foren, wie z.B. linuxforen.de o.ä. die Suchfunktion für nicht registrierte Benutzer nicht deaktivieren.
Das finde ich übrigens abscheulich - einerseits sich darüber beschweren, dass keiner die Suchfunktion benutzt und andererseits so was...
Noch schlimmer finde ich die Captachas, die man inzwischen manchmal an dieser Stelle auffindet.Ich würde konkret folgendes vorschlagen:
Die oben genannte URL wird anstatt der google-Suche eingebettet (halt noch mit Auswahl ob man nur im Titel suchen will und in welchem Unterforum). Ich verbessere das Programm soweit, dass es möglichst bugfrei ist und performancemäßig passt. Dann sehen wir einfach weiter - ich hätte auch kein Problem damit den Sourcecode weiterzugeben...
-
Ich weiß ja auch nicht wieso ich keine Antwort hier bekomme. Es wäre nett wenn man wenigstens Ablehnen würde, vllt. weil der Aufwand zu groß ist oder so.
Das wäre akzeptierbar, allerdings nicht anzuraten:
z.B. hatte ich vor ner Zeit ein Problem, dass sich mal ausnahmsweise nicht durch durchsuchen von Foren/Google lösen lies. Bei einer Windowsanwenung erstellt mit Borland C++ Builder unter Vista flackerte die Fortschrittsanzeige.
Wenn jetzt jemand das selbe Problem hat - nämlich jemand der eine Anwendung mit Forschrittsbalken unter Vista mal getestet hat - dann sucht er hoffentlich erst mal im Forum.
Er beschränkt das Subforum natürlich auf VCL. Dann gibt er vllt. ein:
Vista Fortschrittsanzeige
Vista ProgressBar
Progressbar flackernDie Suchfunktion findet mit keiner Suchanfrage nichts, mit google(im Forum) auch nicht. Wahrscheinlich liegt das ganze gerade an Bug #3 und wird bald behoben. Aber meine Suche ist schon mal besser als die von google, denn sie findet für die 2 unteren Suchbegriffe den gewünschten Eintrag und für den oberen liefert sie bei "Vista Fortschritt" das richtige zurück - für objektivere Test bin ich gerne offen. Allerdings müsste ich dafür vorher das ganze Forum indizieren.
Also könnte man doch auf jeden Fall die google Suche damit ersetzen, oder?
Ich fände es nett, wenn ein Verantworlicher seine Meinung dazu äußern würde.
-
Versuch einfach, Deine Vorstellung von Reaktionszeit hier um den Faktor 100 zu steigern. Es dauert halt manchmal ein bißchen.
-
Ich hab das Thema im Moderatoren-Forum nochmal angestoßen. Es kann allerdings trotzdem eine Weile dauern, schließlich sind viele von uns berufstätig oder anderweitig stark eingebunden.
Damit's trotzdem irgendwie vorangeht antizipiere ich einfach mal ein paar Fragen, die mit Sicherheit gestellt werden:
Kannst Du vielleicht noch ein paar Details nennen? Wieviele Beiträge sind derzeit indexiert? Wie groß ist die Suchtabelle dafür? Wie funktioniert das Programm? Hält es die Tabelle die ganze Zeit im Speicher? Wieviel Speicher würde ein kompletter Index des Forums ungefähr benötigen? Kannst Du die Suchzeiten dafür schätzen?
-
Tobias3: Sorry, aber hier dauert alles einfach ein bisschen länger.
Noch eine Frage für Jesters Katalog: Welche Voraussetzungen hat Deine Suche an den Server softwareseitig? (Libraries, DB, …)
-
ok, hier ein paar Details:
-Es sind 922583 Beiträge und 129241 Themen indexiert. Auf der Hauptseite wird eine Gesamtanzahl von 1365687 Beiträgen angezeigt, also sind bereits 67% der Beiträge im Index.
-Grundlegen besteht der Index aus 3 Dateien. Eine sqlite-Datenbank, die mit der o.g. Anzahl ca. 800MB groß ist und in der die Beiträge und Themen gespeichert sind, eine 85MB große Datei, die den Index für die Suchdatenbank darstellt und eine 2,88 GB große Datei in der die Suchbegriffe mitsamt ids der Nachrichten in der sie Vorkommen gelistet sind.
-Durch umkonfigurieren kann man alles so einstellen, dass nichts im Speicher ist - Es wird aber gecached.
-Ein komletter Index würde wohl dann kaum mehr Speicher brauchen, dann wäre die sqlite Datenbank etwas über 1GB groß, der Index vergrößert sich ja nicht linear also würde ich da etwas über 3GB schätzen
-Die Suchzeiten kann ich gut abschätzen: Wenn man momentan nach einem Zuchbegriff sucht der häufig vorkommt, dann erreicht man das Limit der maximalen Einträge, dann dauert eine Suche max. 1s (maximale Dauer für einen Suchbegriff) - diese Zeit ist beinahe linear mit der Anzahl der Suchbegriffe. Bitte hierbei berücksichtigen, dass das ganze auf einem PIII 500Mhz mit Laptopfestplatte läuft. Die Verlangsamung der binären Suche kann man ja Aufgrund von O(log n) bei einer Vergrößerung des Indexes beinahe vernachlässigen.
-Abhängig ist das ganze von Boost::Threads und sqlite3. Läuft auf linux und Windows.
-
Klingt schonmal ganz gut.
Tobias3 schrieb:
-Durch umkonfigurieren kann man alles so einstellen, dass nichts im Speicher ist - Es wird aber gecached.
Wieviel Speicher brauchen wir für Deine Suche Deiner Erfahrung nach, für vernünftige Performance in etwa?
-
nman schrieb:
Wieviel Speicher brauchen wir für Deine Suche Deiner Erfahrung nach, für vernünftige Performance in etwa?
Hmm das ist schwer zu sagen, also ich bau um schneller ans Ergebnis zu gelangen eine Hint-Tabelle auf (die kann man aber abschalten). Da hab ich Momentan 200 Einträge drin mit jeweils zwei 64 bit einträgen -> 3,2 kb - würde da aber evtl. mehr spendieren (auf der Maschine ist der RAM knapp).
Beim restlichen Caching ist vorallem wichtig, dass keine erneute Suche beim anklicken auf weiter stattfindet - deswegen hängt da der Speicherverbauch von der Anzahl der gleichzeitigen Benutzer ab. Es gibt aber ein oberes Limit (muss ich jetzt nicht unbedingt ausrechnen oder?). Momentan wird so ein Cache-Eintrag nach 20 min gelöscht. Dann hat sqlite natürlich noch einen Cache für die Indexes für die Tabellen und die Tabellen selber.
Also die Suche die gerade läuft braucht im Moment 13 MB allerdings benützt die auch keiner. Mit 100 MB dürfte man ordentliche Performance bekommen.
-
Tobias3 schrieb:
Es gibt aber ein oberes Limit (muss ich jetzt nicht unbedingt ausrechnen oder?).
Nein, es ging mir nur um die Größenordnung.
Also die Suche die gerade läuft braucht im Moment 13 MB allerdings benützt die auch keiner. Mit 100 MB dürfte man ordentliche Performance bekommen.
Das sollte machbar sein.
-
Tobias3: hast du meine mail bekommen?
-
Jester schrieb:
Tobias3: hast du meine mail bekommen?
Sry, ist im Spam-Filter gelandet. Antworte gerade.