[SQL] Letzte Suchanfragen und Topsuchanfragen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von teqnix, 12. Juli 2009 .

Schlagworte:
  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
     
  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)
     
  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
     
  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.
     
  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.
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.