Wie funktioniert die phpbb Suche?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
RusTin
Mitglied
Beiträge: 269
Registriert: 20.09.2003 08:45
Wohnort: Düppenweiler
Kontaktdaten:

Wie funktioniert die phpbb Suche?

Beitrag von RusTin »

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?
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

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
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
Benutzeravatar
RusTin
Mitglied
Beiträge: 269
Registriert: 20.09.2003 08:45
Wohnort: Düppenweiler
Kontaktdaten:

Beitrag von RusTin »

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.
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

RusTin hat geschrieben:Ausserdem hat die wordmatch Tabelle 5mal so viel Einträge, wie die word list Tabelle.
Und was ist daran jetzt falsch?

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?????
Benutzeravatar
RusTin
Mitglied
Beiträge: 269
Registriert: 20.09.2003 08:45
Wohnort: Düppenweiler
Kontaktdaten:

Beitrag von RusTin »

ja wenn das so wär, wärs ja toll, aber so ist es nicht.
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

RusTin hat geschrieben:ja wenn das so wär, wärs ja toll, aber so ist es nicht.
sprich Klarttext....

baust du was zusammen was nicht dem entspricht was es sein soll?
allg. Forenproblem?
Verständnisproblem?
Programmierproblem?
Benutzeravatar
RusTin
Mitglied
Beiträge: 269
Registriert: 20.09.2003 08:45
Wohnort: Düppenweiler
Kontaktdaten:

Beitrag von RusTin »

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%'");
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

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%'");
Das ist allerdings seltsam....Installiere dir mal den DB-Maintenance Mod und check mal die Tables.....
Benutzeravatar
RusTin
Mitglied
Beiträge: 269
Registriert: 20.09.2003 08:45
Wohnort: Düppenweiler
Kontaktdaten:

Beitrag von RusTin »

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 :o
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

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 :o
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?

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%'
Wenn ich in der Abfrage noch die post_text Table integrieren erhalte ich den geposteten Text.....

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...........
Antworten

Zurück zu „Coding & Technik“