Als Verständnis. Der geht die Datenbank durch um "gewöhnliche" Wörter aus der Datenbank rauszuschmeißen. Und das macht der bei jedem neuen Post. Was ich schon alleine komisch finde aber egal.
Also hier nochmal der Übeltäter:
Code: Alles auswählen
$sql = "SELECT m.word_id
FROM " . SEARCH_MATCH_TABLE . " m, " . SEARCH_WORD_TABLE . " w
WHERE w.word_text IN ($word_id_sql)
AND m.word_id = w.word_id
GROUP BY m.word_id
HAVING COUNT(m.word_id) > $common_threshold";
Danach werden diese Daten weiter verarbeitet. Erst werden die als "gewöhnlich" erkannten Wörter hier gekennzeichnet:
Code: Alles auswählen
$sql = "UPDATE " . SEARCH_WORD_TABLE . "
SET word_common = " . TRUE . "
WHERE word_id IN ($common_word_id)";
Code: Alles auswählen
$sql = "DELETE FROM " . SEARCH_MATCH_TABLE . "
WHERE word_id IN ($common_word_id)";
Laut der Formel ist ein Wort nur dann gewöhnlich, wenn es in einem Viertel aller Posts vorkommt. D.h. es muss in 4 von 10 Posts vorkommen, damit wir uns von diesem Wort trennen können:
Code: Alles auswählen
$common_threshold = floor($row['total_posts'] * $fraction);
Suche ich nun dank der Abfrage aus der Dokunach den häufigsten Wörtern in meinem Forum so bekomme ich z.B. diese Top 10:
Code: Alles auswählen
17 ich 101579
27 und 87074
65 die 84334
6 das 83042
34 der 70004
272 ist 62721
93 auch 62422
113 nicht 57311
87 aber 57225
41 mal 50313
Also ist es bei mir tatsächlich so, dass mein "Gewöhnlichkeitsindex" 1/40 beträgt. Also wenn das Wort in zehn von 400 Beiträgen auftaucht, dann ist es gewöhnlich.
Ich könnte nun zwei Wege einschlagen. Einmal ich übernehme die gewöhnlichen Wörter in meine search_stopwords.txt und baue den Suchindex neu auf oder ich ändere die Formel für den Gewöhnlichkeitsindex.
Doch diese Änderung würde mir nicht wirklich weiterhelfen, denn die Abfrage würde ja in Zukunft dennoch generiert werden.
Also behaupte ich mal frech, dass diese Funktion eigentlich eine unnütze Bremse in phpBB ist (da sie ja eh nie greift) und die manuelle Änderung und Übernahme der Wörter in die stopwords viel hilfreicher wäre, da dann gar keine Abfrage generiert wird.
Was mich aber immer noch beschäftigt ist, dass sowohl die Wörter aus meiner "Top 10", der gewöhnlichsten Wörter und die Wörter die allgemein in der Abfrage sind gar nicht darin auftauchen dürften, da sie eh schon in der stopwords stehen. Also suche ich mal weiter...
Aber vorerst habe ich den Gewöhnlichkeitsindex in meiner search_functions.php verändert:
Code: Alles auswählen
if ($mode == 'single')
{
remove_common('single', 1/40, $word);
}
In einem Post, der Übersichtlichkeit halber:
Ich hab in der functions_search.php mal versucht herauszufinden warum die stopwords eigentlich nicht greifen und das kann ich mir gerade mal überhaupt nicht erklären.
Also diesen Code habe ich platziert:
Code: Alles auswählen
if ( !empty($stopword_list) )
{
for ($j = 0; $j < count($stopword_list); $j++)
{
$stopword = trim($stopword_list[$j]);
if ( $mode == 'post' || ( $stopword != 'not' && $stopword != 'and' && $stopword != 'or' ) )
{
$entry = str_replace(' ' . trim($stopword) . ' ', ' ', $entry);
// mein Code zur Prüfung
if ($user->data['user_id'] == 2)
{
echo('Der zu verarbeitende Eintrag: "');
echo($entry . '"<br />');
echo('Das erste Wort was zu ersetzen ist: "');
echo($stopword . '"<br />');
exit;
}
// Ende mein Code
}
}
}
[ externes Bild ]
Dann lasse ich mir den Quelltext anzeigen:
[ externes Bild ]
Sehe ich das richtig?! Japanisch?!
Übrigens sieht der Spaß in Firefox ähnlich komisch aus:
[ externes Bild ]
Na was sagt ihr

EDIT2:
Tja, man glaubt es kaum. Das Problem ist simpel und wurde gelöst:
Die search_stopwords.txt hatte kein Format angegeben. Also sie war als reiner Datencontainer auf dem Server angegeben. Nun ist sie geändert auf plaintext und schon klappts. Nur dumm, dass das jetzt heißt, dass ich den kompletten Suchindex neu aufbauen muss.
Naja. Aber dann sollte der Server wieder rennen.
Gruß