Seite 2 von 2

Verfasst: 03.01.2007 00:11
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....

Verfasst: 03.01.2007 00:18
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.

Verfasst: 03.01.2007 00:55
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.

Verfasst: 03.01.2007 02:31
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.