Wie funktioniert die phpbb Suche?
Wie funktioniert die phpbb Suche?
Hi,
Ich möchte mir eine kleine Suchfuntion schreiben, die nur aus einem Forum Beiträge sucht. Allerdings will ich die selbst machen, da 1. nur der erste Beitrag des Themas durchsucht werden soll und 2. eine andere Ausgabe später erscheinen soll. So weit so gut. Ich hab dann probiert die Suche über die phpbb_search_wordlist Tabelle zu machen. Allerdings ist mir dann aufgefallen, dass da ja keine Wörter doppelt drin stehen und dann ja einige Beitrag fehlen werden wenn man nach oft benutzten Wörtern bzw. Namen sucht. Wie macht das denn phpbb?
Ich möchte mir eine kleine Suchfuntion schreiben, die nur aus einem Forum Beiträge sucht. Allerdings will ich die selbst machen, da 1. nur der erste Beitrag des Themas durchsucht werden soll und 2. eine andere Ausgabe später erscheinen soll. So weit so gut. Ich hab dann probiert die Suche über die phpbb_search_wordlist Tabelle zu machen. Allerdings ist mir dann aufgefallen, dass da ja keine Wörter doppelt drin stehen und dann ja einige Beitrag fehlen werden wenn man nach oft benutzten Wörtern bzw. Namen sucht. Wie macht das denn phpbb?
Die phpbb_search_wordlist beinhaltet einer Liste alle in den Beiträgen vorkommenden Wörtern. Jedem Wort wird dabei eine ID zugeordnet.
Die phpbb_search_wordmatch wiederrum beinhaltet dann die Zuordnung Wort - Beitrag.
Gruß, Philipp
Die phpbb_search_wordmatch wiederrum beinhaltet dann die Zuordnung Wort - Beitrag.
Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Das hab ich mir auch schon gedacht, aber das kann irgendwie nicht stimmen. Ich habe zuerst den Suchbegriff aus der wordlist raussuchen gelassen und bekomme ja dann die Wortid. Dann hab ich die Stellen an der die Wortid in der wordmatch Tabelle vorkommt raussuchen lassen um dann an die Postid zu kommen. Allerdings kommt da nur eine raus, obwohl da einige mehr kommen sollten. Ausserdem hat die wordmatch Tabelle 5mal so viel Einträge, wie die word list Tabelle.
- Blutgerinsel
- Mitglied
- Beiträge: 1801
- Registriert: 19.07.2004 18:53
- Wohnort: Landkreis Ulm
- Kontaktdaten:
Und was ist daran jetzt falsch?RusTin hat geschrieben:Ausserdem hat die wordmatch Tabelle 5mal so viel Einträge, wie die word list Tabelle.
Wenn ich:
a) Das Wort nur einmalig festhalte
b) Und dieses Wort in 1:n Beiträgen auftauchen kann
Muss ja wohl zwangsläufig die wordmatch Table größer sein?????
- Blutgerinsel
- Mitglied
- Beiträge: 1801
- Registriert: 19.07.2004 18:53
- Wohnort: Landkreis Ulm
- Kontaktdaten:
ich habe jetzt z.B. sogar ein Wort auf dem Titel eines Themas kopiert und danach gesucht. Ohne Erfolg. Sehr seltsam. Ich habe die Abfrage in der wordlist so gemacht:
Code: Alles auswählen
$result_words = mysql_query("SELECT word_id FROM phpbb_search_wordlist WHERE word_text LIKE '%$begriff%'");
- Blutgerinsel
- Mitglied
- Beiträge: 1801
- Registriert: 19.07.2004 18:53
- Wohnort: Landkreis Ulm
- Kontaktdaten:
Das ist allerdings seltsam....Installiere dir mal den DB-Maintenance Mod und check mal die Tables.....RusTin hat geschrieben:ich habe jetzt z.B. sogar ein Wort auf dem Titel eines Themas kopiert und danach gesucht. Ohne Erfolg. Sehr seltsam. Ich habe die Abfrage in der wordlist so gemacht:
Code: Alles auswählen
$result_words = mysql_query("SELECT word_id FROM phpbb_search_wordlist WHERE word_text LIKE '%$begriff%'");
Den hab ich drauf. Was genau soll ich da ausführen? Suchtabelle erneuern oder was?
edit: aber wart mal. das kann daran nicht liegen! weil wenn ich es mit der phpbb suche mach, dann kommt der thread auch! da muss irgendwas an der abfrage nicht stimmen. Hab mal probiert anstatt "LIKE" einfach nen "=" zu setzen aber dann kam da nen mysql Fehler
edit: aber wart mal. das kann daran nicht liegen! weil wenn ich es mit der phpbb suche mach, dann kommt der thread auch! da muss irgendwas an der abfrage nicht stimmen. Hab mal probiert anstatt "LIKE" einfach nen "=" zu setzen aber dann kam da nen mysql Fehler

- Blutgerinsel
- Mitglied
- Beiträge: 1801
- Registriert: 19.07.2004 18:53
- Wohnort: Landkreis Ulm
- Kontaktdaten:
Jetzt kommen mir der Sache näher bin von einem allg. Fehler ausgegangen das du die Threads via dieser Table nicht bekommst ist doch wohl klar oder etwa nicht?RusTin hat geschrieben:Den hab ich drauf. Was genau soll ich da ausführen? Suchtabelle erneuern oder was?
edit: aber wart mal. das kann daran nicht liegen! weil wenn ich es mit der phpbb suche mach, dann kommt der thread auch! da muss irgendwas an der abfrage nicht stimmen. Hab mal probiert anstatt "LIKE" einfach nen "=" zu setzen aber dann kam da nen mysql Fehler
via dem hier bekomme ich alle post_ids die mit dem Suchbegriff assoiziert werden können......
Code: Alles auswählen
SELECT WMATCH.post_id
FROM
phpbb_search_wordlist WLIST
LEFT JOIN
phpbb_search_wordmatch WMATCH
ON WLIST.word_id=WMATCH.word_id
WHERE
WLIST.word_text LIKE '%blubb%'
Wo ist nu das Problem eigentlich?
P.S.: = bedeutet gleich wenn es auch bei Access zum Beispiel zweckentfremdet wird, d.h. überladener Operator
Bei Mysql ist = auch wirklich =....Like verwendet man bei Feld(er) die man nach einem Muster durchsuchen lassen möchte...........