Hallo Forum-Entwickler & Community!
Ich habe ein Problem mit der mm_forum Extension Version 0.1.4
Nachdem ich die Tabellen "tx_mmforum_posts", "_posts_text", "_topics", "_wordlist", "_wordmatch" geleert habe und neue Themen mit Posts angelegt habe bekomme ich nach der Indizierung der Suche Phantom-Ergebnisse geliefert, die nicht mehr existieren.
Im Link ist z.B. keine Forum-ID angegeben ( [tid]= )
In welcher Tabelle werden noch Informationen gespeichert?
Gruß, Daniz
Hallo,
es gibt noch die Tabelle tx_mmforum_searchresults, hierin werden kurzfristig (halbe Stunde) Suchergebnisse gecached, damit nicht jedes Mal, wenn jemand in der Suche eine Seite vor oder zurückblättert die komplette Suche noch einmal durchgeführt werden muss. Sprich: Entweder diese Tabelle auch noch leeren oder einfach nen bisschen warten... 😉
Martin
Hallo Martin,
vielen Dank für den Hinweis, ich habe auch die Tabelle einmal geleert.
Leider hat das alleine noch nicht zum gewünschten Ergebnis geführt!
Ich musste erst noch so viele Beiträge anlegen, wie ich vorher hatte und
anschliessend die Tabellen "tx_mmforum_searchresults", "_wordlist" und "_wordmatch" leeren.
Auf den ersten Blick schien damit das Problem der Phantom-Ergebnisse behoben zu sein.
Gruß, Daniz
Hallo Daniz.
Ich hatte das selbe Problem, allerdings wurden die Falschen Suchergebnisse immer wieder angezeigt.
Darum habe ich mal ein wenig mit mysql herumexperimentiert und die Suchfunktion der Extension ein wenig umgeschrieben.
$search = "";
$delimitter = "%";
$suchstring = explode(" ",t3lib_div::_POST("tx_mmforum_pi4[searchstring]"));
for($i=0;$i<count($suchstring);$i++){
$search .= $delimitter.$suchstring[$i];
}
$search .= $delimitter;
$query = "SELECT pt.post_text, t.topic_title, f.forum_name, t.topic_time ";
$query .= "FROM tx_mmforum_posts p, tx_mmforum_forums f, tx_mmforum_topics t, tx_mmforum_posts_text pt ";
$query .= "WHERE pt.post_text LIKE '$search' AND pt.post_id = p.uid ";
$query .= "AND p.topic_id = t.uid AND t.forum_id = f.uid ";
$query .= "AND pt.deleted = 0 AND pt.hidden = 0 ";
$query .= "AND p.deleted = 0 AND p.hidden = 0 ";
$query .= "AND t.deleted = 0 AND t.hidden = 0 ";
$query .= "AND f.deleted = 0 AND f.hidden = 0;";
....
mit dieser Abfrage bekommst du nur Eintraäge die nicht gelöscht sind. Ohen irgendeinen Cache zu leeren.
Den rest vom Skript (auslesen etc) kannst du dir ja selber dazu reimen.
Ich will dir den Spaß am selber coden ja nicht nehmen.
Gruß,
Thorsten