#1 12. Juli 2009 Letzte Suchanfragen und Topsuchanfragen Hi, ich würde gerne bei einer Suche die letzten Suchanfragen und die Topsuchanfragen (wie bei raidrush.org) speichern und dartsellen lassen. Hab mir schon Gedanken gemacht, wie ich das machen soll bin mir da aber noch nicht ganz einig. Zumal kann ich ja schlecht jede Suichanfrage in meine Tabelle schreiben und dann noch abgleichen, ob es die schonmal gegeben hat. Das wäre ja schon ziemlich krass bei mehreren Anfragen gleichzeitig o.0. Bin da jetzt ziemlich planlos und hoffe mal, dass mir da jmnd weiterhelfen kann. BW ist natürlich für jede gute Hilfe drinne + Multi-Zitat Zitieren
#2 12. Juli 2009 AW: Letzte Suchanfragen und Topsuchanfragen Die letzten Suchanfragen musst du wohl oder übel komplett speichern Und soweit ich weiß wirds in einem Forum auch nicht anders gemacht als die Wörter einer Suchanfrage zu speichern... Also: Suchwort ist von mir aus: "Ich suche heute mal wieder was" Das script teilt das ganze auf in "Ich", "suche", "heute", "mal", "wieder" und "was"... Danach wird das ganze mit einer art blacklist abgeglichen wobei manche Begriffe wieder rausfliegen (für-wörter etc...) Also fliegt raus: "Ich", "mal", "wieder", "was".... Die verbleibenden Wörter "suche", "heute", "wieder" werden halt in einer (zwischen)tabelle gespeichert. Falls es das Wort bereits gibt wird ein counter erhöht... (also die Tabelle enthält das Wort und einen counter) + Multi-Zitat Zitieren
#3 12. Juli 2009 AW: Letzte Suchanfragen und Topsuchanfragen Okay danke, das klingt schonmal viel versprechend Werde das so auch versuchen umzusetzen. BW hast du + Multi-Zitat Zitieren
#4 14. Juli 2009 AW: Letzte Suchanfragen und Topsuchanfragen Was denkst du denn, was hier geschieht? Wenn ein Forum viele Benutzer hat, dann kann es schon geschehen, dass gleichzeitig Beiträge verfasst und Messages versendet werden. Bei jedem Seitenaufruf wird eine Datenbankabfrage gesendet. Das muss die DB schon beweltigen und ja, man muss alle Suchanfragen speichern, wüsste nicht, wie es sonst geht, Dinge zu behalten? Wenn du überschüssige Datensätze los haben möchtest, kannst du zusätzlich noch einen Timestamp abspeichern, um veraltete Suchanfragen evtl. manuell oder per Cronjob ausführen lassen. + Multi-Zitat Zitieren
#5 14. Juli 2009 AW: Letzte Suchanfragen und Topsuchanfragen Danke, an euch. Hatte eben Zeit und mal was zusammengeschrieben. Wer will, kann es sich mal angucken: Spoiler PHP: <html> <head><title></title></head> <body> <?php require_once( 'inc/config.inc.php' ); mysql_connect ( $config [ 'sqlhost' ], $config [ 'sqluser' ], $config [ 'sqlpass' ]) OR die( mysql_error ()); mysql_select_db ( $config [ 'sqldb' ]) OR die( mysql_error ()); if(isset( $_POST [ 'search' ])) { $searchString = strtolower ( trim ( $_POST [ 'search' ])); // unnoetige leerzeichen aus searchquery entfernen $searchArray = explode ( ' ' , $searchString ); // searchquery in ein array zerteilen $searchArray = array_unique ( $searchArray ); // doppelte suchwoerter entfernen $stopWords = file ( 'stopwords.txt' ); // blacklist laden $stopWords = array_map ( 'trim' , $stopWords ); foreach ( $stopWords as $filtered ) { $z = array_search ( strtolower ( $filtered ), $searchArray ); if ( $z !== false ) { unset( $searchArray [ $z ]); // wenn blacklist eintrag gefunden, rauslöschen } } $searchtag = implode ( ' ' , $searchArray ); // suchanfrage wieder zusammenfuegen // sql.... $query = 'SELECT keyword, hits FROM `' . $config [ 'pref' ]. 'keywords` WHERE keyword = "' . mysql_real_escape_string ( $searchtag ). '" LIMIT 1;' ; $result = mysql_query ( $query ); $row = mysql_fetch_assoc ( $result ); if( $row ) { $query = 'UPDATE `' . $config [ 'pref' ]. 'keywords` SET hits = hits+1 WHERE keyword = "' . mysql_real_escape_string ( $searchtag ). '" LIMIT 1;' ; } else { $query = 'INSERT INTO `' . $config [ 'pref' ]. 'keywords` (keyword, hits) VALUES ("' . mysql_real_escape_string ( $searchtag ). '", 1);' ; } $result = mysql_query ( $query ); } ?> <form action="" method="POST"> Such String <input type="text" name="search"><input type="submit"> </form> </body> </hmtl> Werde das später dann nochmal ausführlich testen, wenn ich mehr Zeit habe. + Multi-Zitat Zitieren