Wordlist Wordmatch mysql Probleme

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
Shadowman
Mitglied
Beiträge: 170
Registriert: 16.12.2003 19:01
Wohnort: Vaterstetten

Beitrag von Shadowman »

*tütütü*
war das der wink mit dem zaunpfahl? :D
aber wie kann man das problem dann lösen? ich meine wie schaffen dass die grossen foren, wie diablo.de? das is zwar ein ingame forum, doch es ist doch krank wenn dann diese tabelle mehrere gb gross wird, das kann man sich doch nicht leisten.
Proud Admin & Webmaster of http://www.broxx-com.de
modellskipper
Mitglied
Beiträge: 14
Registriert: 31.03.2003 15:41
Wohnort: Rostock

Beitrag von modellskipper »

Shadowman hat geschrieben:aber wie kann man das problem dann lösen?
In dem du dir ein Mod bastelst, was eine Like-Suche, direkt auf deine Posting-Texte absetzt. Das geht so bis 100.000 Datensätze ganz gut und bleibt unter einer Sekunde. Nicht elegant aber platzsparend, dann wirds kritisch, wegen der Suchzeiten, könnten timemout's zur Folge haben.

Ich bin schon seit längerem am überlegen was ich mache, denn meine Datenbankgröße ist auf 100 MB beschränkt. Irgendwann muss ich mir da was einfallen lassen.

Momentan habe ich etwa 25 MB belegt, aber die Frequentierung meines Forums nimmt zu.
R. U. Serious
Mitglied
Beiträge: 153
Registriert: 11.10.2003 12:33
Kontaktdaten:

Beitrag von R. U. Serious »

modellskipper hat geschrieben:In dem du dir ein Mod bastelst, was eine Like-Suche, direkt auf deine Posting-Texte absetzt.
Das erzeugt aber (wie du auch selber schreibst) eine ungeheure Last beim suchen, sodass es gerade bei grösseren Foren definitiv keine Alternative ist.

Was teilweise noch diskutiert wird, ist ob die mySQL eigene Volltext-Suche eventuell besser ist. Allerdings spart man keinen Platz, weil dann eben mysql einen riesigen Index über alle Beiträge aufbaut. Ist also ein bisschen wie den Teufel mit dem Belzebub austreiben.

Es ist unbestritten, dass eine effiziente Suche nur über Indizes laufen kann, das ist in der Datenbanktheorie auch seit über 20 (?) Jahren unbestritten. Die Frage ist halt nur wie er idealerweise implementiert sein soll.
Benutzeravatar
Shadowman
Mitglied
Beiträge: 170
Registriert: 16.12.2003 19:01
Wohnort: Vaterstetten

Beitrag von Shadowman »

hm, das is ja wirklich blöd,
wie gross sind denn diese beiden tabellen hier im phpbb.de forum?
das muss doch einen ungeheuren speicherplatz fressen.
Proud Admin & Webmaster of http://www.broxx-com.de
Benutzeravatar
itst
Ehrenadmin
Beiträge: 7418
Registriert: 21.08.2001 02:00
Wohnort: Büttelborn bei Darmstadt
Kontaktdaten:

Beitrag von itst »

phpbb_search_results 2,7 MB
phpbb_search_wordlist 5,9 MB
phpbb_search_wordmatch 73,2 MB

Die DB ist insgesamt 176,7 MB groß.
Sascha A. Carlin,
phpBB.de Ehrenadministrator
:o
modellskipper
Mitglied
Beiträge: 14
Registriert: 31.03.2003 15:41
Wohnort: Rostock

Beitrag von modellskipper »

R. U. Serious hat geschrieben:mySQL eigene Volltext-Suche
Bei mir im Forum sind etwa 8.000 Posts gespeichert. Es werden 4,3 MB belegt. Nach dem Setzen des FULLTEXT-Index werden 8,1 MB belegt, sind also gerade mal 3,8 MB Speicherplatz, der für den Index benötigt wird.

Meine Search-Tabellen belegen insgesamt 10,7 MB, was in etwa 3 mal soviel ist.

Wäre also eine Alternative.

Aber, jetzt kommt das große Aber, die Fulltext-Suche ist noch nicht ausgereift, leider nur eine halbe Sache. Ich habe eine 3.x Version von MySQL auf meinem Server und weiß nicht wie es in der 4.x aussieht. Ich habe auch nur einen Server gemietet und habe keine Möglichkeit irgendwelche Einstellung vorzunehmen.

FULTEXT hat so seine Nachteile:
  • Findet nur komplette Begriffe, keine "Bruchstücke" (Suche nach 'Auto'
    findet nicht 'Autotür' etc.)
  • Keine Verwendung der "Jokerzeichen" % und _
  • Bestimmte Suchbegriffe werden nicht gefunden (Der englische Begriff 'while' z.B. wird nicht indiziert, also auch nicht
    gefunden)
und es gibt noch einiges mehr
eine ungeheure Last beim suchen
Ja erwähnte ich, bis zu einer gewissen Grenze ist es vertretbar und bei kleineren Foren mit begrenztem Speicherplatz wäre es eine Alternative.

Ich möchte aber bemerken, dass ich natürlich einer indizierten Suche in jedem Fall den Vorrang gebe.

Wir haben mal spaßenshalber ein Projekt mit einer derartigen Likesuche erstellt. Es sind etwa 10.500 Datensätze mit insgesamt 324.460 Suchworten gespeichert. Die Tabelle belegt etwa 4,2 MB in der Datenbank. Das ist etwa die Größenordnung meines derzeitigen Forums.

Also wie schon erwähnt, es ist eine Alternativ, aber keine vernüftige Lösung. Ein gutes Forum sollte ein schnelle Suche haben.
Benutzeravatar
itst
Ehrenadmin
Beiträge: 7418
Registriert: 21.08.2001 02:00
Wohnort: Büttelborn bei Darmstadt
Kontaktdaten:

Beitrag von itst »

Die Fulltext-Features wurden in 4.x deutlich erweitert und sind sehr mächtig.

Im Rahmen eines Projekts haben wir das Ding unter die Lupe genommen und ausgibigst getestet: geile Sache. Sehr schneller, sehr kleine Indizes und auch recht flexibel.

http://www.mysql.com/doc/de/Volltext-Fe ... L_4.0.html

Auch lesenswert: http://www.mysql.com/doc/de/Fulltext_Fine-tuning.html
Sascha A. Carlin,
phpBB.de Ehrenadministrator
:o
Olaf
Mitglied
Beiträge: 49
Registriert: 04.12.2003 00:08
Kontaktdaten:

Beitrag von Olaf »

Hallo miteinander !

Hätte ich das nur vor ein paar Wochen erfahren...

Ich bin nach langer Vorbereitung vor 2 Tagen mit meinem WBB-Forum auf phpBB umgestiegen.
Konvertierung von 20.000 Threads / 200.000 Posts / 7.000 Usern => 5 Stunden, Neuaufbau des Suchindex knapp 40 Stunden.

Datenbank gesamt 220 MB
davon
phpbb_search_wordlist => 218.982 Einträge, 8,9 MB
phpbb_search_wordmatch => 6.098.895 Einträge, 140,8 MB

Rootserver bei Strato.

Alles schien in der Testphase einwandfrei, also endlich gestartet.
Vor ein paar Stunden bemerke ich dann, dass beim Posten eines längeren Beitrages irgendwie alles recht lange dauert, bis man die Bestätigungsseite sieht. Je länger der Beitrag, desto länger dauerts.
Hatte mich schon bei der Konvertierung über die Suchtabelle bzw. deren Größe gewundert, daher ging meine Vermutung sofort in die Richtung.

Was kann ich nun dagegen machen ?
Leider scheint hier ja keine wirkliche Lösung gefudnen worden zu sein.
Für die englischsprachige Seite reichen meine alten Schulkenntnisse nicht aus, die langen gerade mal um im Ausland nicht zu verhungern oder verdursten.

Noch könnte ich die Page wieder abschalten und mein WBB wieder aktivieren, wären nur 2 Tage verloren.

Gruß
Olaf
Olaf
Mitglied
Beiträge: 49
Registriert: 04.12.2003 00:08
Kontaktdaten:

Beitrag von Olaf »

R. U. Serious hat geschrieben:Es gibt im phpbb-code im code einen Teil der sehr häufig vorkommende Worte markiert und nicht weiter in die Suchtabellen einträgt.
...
IMHO kann man die ohne weitere Folgen entfernen. Dazu mache folgendes:
Öffne includes/functions_search.php und kommentiere folgende Zeile aus:

Code: Alles auswählen

		remove_common('single', 0.4, $word);
Aber bedeutet das nicht, dass auch eben die Wörter, die man evtl. finden möchte, ausgeschlossen werden ?
Was ist, wenn jemand ein großes Forum z.B. über Autos hat, und das Auskommentieren dann den Begriff "Motor" ausgrenzt, nur weil der oft vorkommt ?

Gruß
Olaf
R. U. Serious
Mitglied
Beiträge: 153
Registriert: 11.10.2003 12:33
Kontaktdaten:

Beitrag von R. U. Serious »

Olaf hat geschrieben: Aber bedeutet das nicht, dass auch eben die Wörter, die man evtl. finden möchte, ausgeschlossen werden ?
Was ist, wenn jemand ein großes Forum z.B. über Autos hat, und das Auskommentieren dann den Begriff "Motor" ausgrenzt, nur weil der oft vorkommt ?
Hallo Olaf,

vorweg: Das was ich empfehle ist dieses Code-Stück auszukommentieren, und dadurch wird verhindert, dass Begriffe ausgenommen werden.
Was die Originalfunktionalität angeht: Sie verhindert, dass Begriffe die in über 40% der Beiträge vorkommen kein qualifiziertes Suchwort sind. DUrch Verzicht auf weiteres Indexieren, spart man eine Menge Platz, ohne dabei viel Funktionalität zu verlieren. Fiktives Bsp.: Wenn ich ein Forum über Autos habe, dann ist das Wort "Auto" vermutlich nicht unbedingt hilfreich bei der Suche/Eingrenzung nach bestimmten Themen. Das Wort Motor wird sicher nicht in jedem zweiten Beitrag vorkommen. Wenn es aber so oft vorkommt, dann ist es wohl in erster Linie ein Forum über Motoren, und man müsste die Suche ohnehin weiter spezifizieren...

Bei den mir bekannten Foren ist diese Funktion übrigens nie zum Zuge gekommen, egal ob bei 5.000, 50.000 oder 350.000 Beiträgen.

Es ist ein IMHO sehr übervorsichtiger Kompromiss, über den sich AFAIR nie jemand beschwert hat. Wenn es im Einzelfall unerwünscht ist, kann man es einfach herausnehmen, wie von mir beschrieben...
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“