Stimmt was nicht mit meiner Foren-Suche ?

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
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Das liegt vermutlich daran, dass auch der DB Maintenance Mod den Suchindex auf Basis des Standards neu Aufbaut -> der steht auf 20 Zeichen und muss auch umgestellt werden. Außerdem solltest du deine Datenbank kontrollieren, ob sie die Spalte auch auf VARCHAR(50) eingestellt hat. Sonst wird das mit dem finden zu langer Wörter evtl. schwierig...

in der admin/admin_db_maintenance.php findet sich folgende Codestelle:

Code: Alles auswählen

while ($row && ($post_size <= $board_config['dbmtnc_rebuildcfg_maxmemory'] * 1024 || $i < $board_config['dbmtnc_rebuildcfg_minposts']))
						{
							$last_post = $row['post_id'];
							// handle text
							$word_list = split_words(clean_words('post', $row['post_text'], $empty_array, $empty_array));
							foreach ($word_list as $word)
							{
								// cutting of long words in functions_search.php seems not to work under some conditions - so check it again
								if ( $word != '' && strlen($word) <= 20 )
								{
									$result_array[0][] = $last_post;
									$result_array[1][] = 0;
									$result_array[2][] = $word;
								}
							}
							// handle subject
							$word_list = split_words(clean_words('post', $row['post_subject'], $empty_array, $empty_array));
							foreach ($word_list as $word)
							{
								// cutting of long words in functions_search.php seems not to work under some conditions - so check it again
								if ( $word != '' && strlen($word) <= 20 )
								{
									$result_array[0][] = $last_post;
									$result_array[1][] = 1;
									$result_array[2][] = $word;
								}
							}
							unset($word_list);
							$row = $db->sql_fetchrow($result);
							$i++;
							$post_size += strlen($row['post_text']) + strlen($row['post_subject']);
						}
Hier sind die Änderungen nötig (ich vermute mal die PHP Version ist neuer als 3, ansonsten würde es mich sehr wundern warum es nicht funktioniert hat.
Ersetze gegen folgendes:

Code: Alles auswählen

while ($row && ($post_size <= $board_config['dbmtnc_rebuildcfg_maxmemory'] * 1024 || $i < $board_config['dbmtnc_rebuildcfg_minposts']))
						{
							$last_post = $row['post_id'];
							// handle text
							$word_list = split_words(clean_words('post', $row['post_text'], $empty_array, $empty_array));
							foreach ($word_list as $word)
							{
								// cutting of long words in functions_search.php seems not to work under some conditions - so check it again
								if ( $word != '' && strlen($word) <= 50 )
								{
									$result_array[0][] = $last_post;
									$result_array[1][] = 0;
									$result_array[2][] = $word;
								}
							}
							// handle subject
							$word_list = split_words(clean_words('post', $row['post_subject'], $empty_array, $empty_array));
							foreach ($word_list as $word)
							{
								// cutting of long words in functions_search.php seems not to work under some conditions - so check it again
								if ( $word != '' && strlen($word) <= 50 )
								{
									$result_array[0][] = $last_post;
									$result_array[1][] = 1;
									$result_array[2][] = $word;
								}
							}
							unset($word_list);
							$row = $db->sql_fetchrow($result);
							$i++;
							$post_size += strlen($row['post_text']) + strlen($row['post_subject']);
						}
Die andere, von Miriam beschriebene Änderung muss natürlich bestehen bleiben...
Außerdem bitte Backups machen....
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
hackepeter13
Valued Contributor
Beiträge: 3566
Registriert: 21.04.2004 12:22
Wohnort: Berlin
Kontaktdaten:

Beitrag von hackepeter13 »

gn#36 hat geschrieben:Das liegt vermutlich daran, dass auch der DB Maintenance Mod den Suchindex auf Basis des Standards neu Aufbaut -> der steht auf 20 Zeichen und muss auch umgestellt werden. Außerdem solltest du deine Datenbank kontrollieren, ob sie die Spalte auch auf VARCHAR(50) eingestellt hat. Sonst wird das mit dem finden zu langer Wörter evtl. schwierig...
Mit dem VARCHAR(50) ist es ja wie schon gesagt - is ja schon von hause aus so.

Hatte mir auch grad so gedacht, das der Mod so ein Limit drin hat.

PHP Version ist 4.4.4

Dennoch Danke.

EDIT: So nun klappt alles!
PS: Ich finde man sollte es standardmäßig nicht auf 20, sondern 40 oder so setzten.
Ich weiß, es soll hauptsächlich gegen spamms in Beiträgen schützen, wo leute z.b. die Leerzeichen zwischen die wörter vergessen, aber anderseits gibt es viele Wörter die länger sind als nur 20 Zeichen, somal es auch lange Fachbegriffe gibt, die ja nun mal wichtig für die Suche sind.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

hackepeter13 hat geschrieben: EDIT: So nun klappt alles!
PS: Ich finde man sollte es standardmäßig nicht auf 20, sondern 40 oder so setzten.
Ich weiß, es soll hauptsächlich gegen spamms in Beiträgen schützen, wo leute z.b. die Leerzeichen zwischen die wörter vergessen, aber anderseits gibt es viele Wörter die länger sind als nur 20 Zeichen, somal es auch lange Fachbegriffe gibt, die ja nun mal wichtig für die Suche sind.
Ich würde sagen dass ist auch eine Datenmengenreduktion (das Wort wird auch so gerade noch gefunden :D ). Wer sucht - statistisch gesehen - schon nach so langen Wörtern? Vor allem in der (orignalen) Englischen Version? Da gibt es so lange Wörter im Prinzip nahezu nicht.
Das wäre an der Stelle der gleiche Ansatz wie die kurzen Wörter mit 3 oder weniger Buchstaben. Die werden so häufig verwendet, dass sie praktisch überall vorkommen -> man kann sie bei der Suche getrost ignorieren.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
hackepeter13
Valued Contributor
Beiträge: 3566
Registriert: 21.04.2004 12:22
Wohnort: Berlin
Kontaktdaten:

Beitrag von hackepeter13 »

Naja, Wörter wie "ist", "das", "und", usw. werden ja bei der Suche ignoriert (zumindest kann wie blöd nach diese Suchen ^^).

Aber in Foren, wo es eben viele Fachbegriffe gibt, die etwas länger sind, wie eben im KFZ-Bereich - wie eben schon "Motorhaubenverlängerung", da ist das schön wichtig mit mehr als 20 Zeichen.
Und da kann die Datenbank dann auch ruhig 1 MB größer sein/werden, dass ist mir lieber als wenn später ständig neue (sinnlose) Threads eröffnet werden, die früher oder später auch den Platz in der Datenbank verschwenden.

Nur mal so zur Info.
Vor dem Erneuern des Such-Index, hatte ich 51310 Einträge.
Jetzt sind es 52221 Einträge, das macht 911 neue Einträge.

Sicherlich sagt das noch nicht viel aus, weil da auch sowas wie lange "loooooooooooooooooool" im Off-Topic oder so bei sein könnten, aber trotzdem ist das schon ein großer Unterschied.
Allein schon Wörter wie "Temparatureinstellung", "Unbedenklichkeitserklärung", "Spannungsschwankungen", "Kofferraumbeleuchtung", "Drosselklappenelement" usw. können wichtig sein.
Antworten

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