Seite 1 von 1

[Frage] phpbb_search_wordmatch und phpbb_search_wordlist

Verfasst: 11.05.2006 19:55
von emily
Folgende Idee kam mir!

Aus Performance gründen, würde ich gerne den Eintrag (bzgl der Suche), nach einem Posting, in die Datenbank stopen. Wenn ich das richtig verstanden habe, wird jedes Wort in einem Posting abgeglichen ob schon in der Datenbank steht oder nicht, benutzt man noch diese search_stopwords.txt und search_synonyms.txt Dateien, heisst es wieder soviel Datenbankabfragen die unnötige Zeit kosten.

Im Klartext, ich möchte das abschalten, und lasse einfach Nachts täglich den Suchindex neuaufbauen und schon bin ich wieder up to date ;-) Was für mein Forum vollkommen reicht.

Spricht etwas gegen dieses Vorhaben? Hat das jemand mal getestet?

Danke!

Verfasst: 12.05.2006 08:06
von Dave
Nunja... Es geht auf jeden Fall schneller wenn du es bei jedem Posting machst (und ist Server schonender) als wenn du es in der Nacht macht... Besonders dauert es eine weile bis du da durch bist.

Verfasst: 16.05.2006 08:38
von emily
Dave hat geschrieben:Nunja... Es geht auf jeden Fall schneller wenn du es bei jedem Posting machst (und ist Server schonender) als wenn du es in der Nacht macht... Besonders dauert es eine weile bis du da durch bist.
Nunja, ob das schneller geht mag ich bezweifeln, wenn es den Server lahm legt :roll:

Und nachts tut es mir nicht weh ;-) wenn er 10 Minuten steht...

Verfasst: 28.06.2006 23:24
von emily
Ich schieb mal wieder!

Hat jemand eine Ahnung, in welcher Datei, welche Stelle sich die Abfragen befinden, ob das Wort nun schon eingetragen ist oder nicht etc. ;-)

Danke!

Verfasst: 29.06.2006 01:48
von cYbercOsmOnauT
Am mangelnden Wissen kann Deine Frage nicht liegen emily. Denke mal, Du warst/bist nur zu faul um selber schnell nachzusehen.

Natürlich wird dies in der function_post.php bewerkstelligt. ;) Die Funktion, die dazu aufgerufen wird, lautet (hört hört) add_search_words. In diesem Script finden sich auch noch andere Funktionen, die für die Suchfunktion von Nöten sind. Schau es einfach mal durch. :)

P.S.: Wäre nett, wenn Du Deine Signaturgrafik entfernst. Wir sehen sie eh nicht, da sie hinter einem htaccess-Schutz steckt. :D Das Popupfenster jedes Mal nervt. ;)

Viele Grüße,
Tekin

Verfasst: 09.07.2006 21:52
von emily
cYbercOsmOnauT hat geschrieben:Am mangelnden Wissen kann Deine Frage nicht liegen emily. Denke mal, Du warst/bist nur zu faul um selber schnell nachzusehen.

Natürlich wird dies in der function_post.php bewerkstelligt. ;) Die Funktion, die dazu aufgerufen wird, lautet (hört hört) add_search_words. In diesem Script finden sich auch noch andere Funktionen, die für die Suchfunktion von Nöten sind. Schau es einfach mal durch. :)

P.S.: Wäre nett, wenn Du Deine Signaturgrafik entfernst. Wir sehen sie eh nicht, da sie hinter einem htaccess-Schutz steckt. :D Das Popupfenster jedes Mal nervt. ;)

Viele Grüße,
Tekin
Nicht wirklich zu faul, nur nicht soooo wirklich klar gekommen, trotzdem danke :-) Ich schaus mir direkt mal an...

Verfasst: 10.07.2006 22:54
von IPB_Flüchtling
cYbercOsmOnauT hat geschrieben:Natürlich wird dies in der function_post.php bewerkstelligt. ;) Die Funktion, die dazu aufgerufen wird, lautet (hört hört) add_search_words.
Ahoi Tekin,

da hätte ich jetzt einmal eine Anschlussfrage: Angenommen, ich stelle auf Volltextsuche um, wie es in diesem Thread beschrieben wird, kann ich dann die Funktion add_search_words einfach deaktivieren/auskommentieren? Oder müsste ich dann befürchten, dass irgendetwas anderes nicht mehr korrekt funktioniert?

LG, IPB_Flüchtling

Verfasst: 11.07.2006 01:30
von cYbercOsmOnauT
Ehrliche Antwort: Keine Ahnung. :D Frag lieber den Coder des Mods fanrpg. ;)

Viele Grüße,
Tekin

Verfasst: 11.07.2006 02:13
von IPB_Flüchtling
Ein letztes liebes Ahoi vor meiner Schlafphase, Tekin!

Danke Dir für Deine Antwort, insbesondere dass sie so ehrlich ausgefallen ist! Das zeichnet Dich aus!

Den Coder des Mods werde ich nicht noch einmal fragen -

1. habe ich das schon vor längerer Zeit in einem anderen Thread getan, ohne eine Antwort erhalten zu haben: http://www.phpbb.de/viewtopic.php?t=113095

2. bringt es nur selten etwas, deutsche Coder nach Erweiterungen/Ergänzungen ihrer Mods zu fragen: Das scheint einfach ganz und gar unmöglich zu sein. (Mit "ausländischen" Mod-Autoren habe ich diesbezüglich übrigens zumeist viel bessere Erfahrungen machen dürfen. Es gibt aber natürlich auch in unserem Sprachraum sehr löbliche Ausnahmen - die Betreffenden wissen, wenn sie gemeint sind!)

So, und das hier ist der Code, der unser aller Vorstellungsvermögen bei weitem übersteigt:

Code: Alles auswählen

##############################################################
## MOD Title: MySQL Fulltextsearch
## MOD Author: fanrpg < webmaster@fanrpg.com > (Alexander Schumacher) http://www.fanrpg.com/
## MOD Description: Adds an fulltext search
## MOD Version: 1.0.0
##
## Installation Level: Easy
## Installation Time: 2 min
## Files To Edit: 1
##                search.php
## Included Files: n/a
#
#-----[ SQL ]------------------------------------------
#
ALTER TABLE phpbb_posts_text ADD FULLTEXT (post_text);

#
#-----[ OPEN ]------------------------------------------
#
search.php

#
#-----[ FIND ]------------------------------------------
#
                     $match_word = str_replace('*', '%', $split_search[$i]); 
                     $sql = "SELECT m.post_id 
                        FROM " . SEARCH_WORD_TABLE . " w, " . SEARCH_MATCH_TABLE . " m 
                        WHERE w.word_text LIKE '$match_word' 
                           AND m.word_id = w.word_id 
                           AND w.word_common <> 1 
                           $search_msg_only";

#
#-----[ REPLACE WITH ]------------------------------------------
#
                     $match_word = str_replace('*', '%', $split_search[$i]); 
                     $match_word = stripslashes(trim($match_word)); 
                     $sql = "SELECT m.post_id 
                     FROM ".POSTS_TEXT_TABLE." w, ".POSTS_TABLE." m 
                     WHERE MATCH w.post_text AGAINST ('$match_word') 
                     AND w.post_id = m.post_id";

#
#-----[ FIND ]------------------------------------------
#
                     $match_word =  addslashes('%' . str_replace('*', '', $split_search[$i]) . '%'); 
                     $search_msg_only = ( $search_fields ) ? "OR post_subject LIKE '$match_word'" : ''; 
                     $sql = "SELECT post_id 
                        FROM " . POSTS_TEXT_TABLE . " 
                        WHERE post_text LIKE '$match_word' 
                        $search_msg_only";

#
#-----[ REPLACE WITH ]------------------------------------------
#
                      $match_word = str_replace('*', '%', $split_search[$i]); 
                      $match_word = stripslashes(trim($match_word)); 
                      $search_msg_only = ( $search_fields ) ? "OR post_subject LIKE '$match_word'" : ''; 
                      $sql = "SELECT post_id 
                        FROM " . POSTS_TEXT_TABLE . " 
                        WHERE MATCH post_text AGAINST ('$match_word') $search_fields";
                                                                                                
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
Naja, bis demnächst!

LG, IPB_Flüchtling

Verfasst: 11.07.2006 02:33
von cYbercOsmOnauT
Ich merke gerade, ich sollte nachts nicht posten. :D Die Funktion ist natürlich in der functions_search.php zu finden und nicht functions_post.php. In der Zweiten wird sie aufgerufen.

IFB_Flüchtling: Kommentier lieber die Zeile in der functions_post.php aus, die diese Funktion aufruft.

Code: Alles auswählen

add_search_words('single', $post_id, stripslashes($post_message), stripslashes($post_subject));
Die Abfrage des SEARCH_WORD_TABLE findet jedenfalls nur an einer Stelle des search.php statt und diese wird vom Mod von fanrpg verändert. Also für meine müden Augen sollte es keine Probleme geben, wenn Du die Funktion deaktivierst. (Und falls doch kannste es ja mit Database Maintenance wieder geradebiegen ;)).

Grüße,
Tekin