ilch Forum » Ilch Clan 1.1 » Kritik und Verbesserungen » Suchfunktion

Geschlossen
  1. #1
    User Pic
    smepal Mitglied
    Registriert seit
    04.06.2006
    Beiträge
    13
    Beitragswertungen
    0 Beitragspunkte
    Also ich habe festgestellt, dass die Suchfunktiion nur "vorgefertigte" Seiten durchsucht. Seiten, die man selber erstellt hat werden nicht durchsucht. Wie lässt sich das ändern???


    verwendete ilchClan Version: 1.1

    betroffene Homepage: mgb.uttx.net
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    pl4114 Mitglied
    Registriert seit
    16.04.2006
    Beiträge
    84
    Beitragswertungen
    0 Beitragspunkte
    meinst du selfpages oder was????
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    smepal Mitglied
    Registriert seit
    04.06.2006
    Beiträge
    13
    Beitragswertungen
    0 Beitragspunkte
    ja genau die seiten, die man im Script selber erstellen kann.
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    sCoRpIoN Mitglied
    Registriert seit
    03.03.2005
    Beiträge
    1.883
    Beitragswertungen
    0 Beitragspunkte
    das lässt sich nicht einfach ändern, denn die suchfunktion durchsucht auch nur die datenbank;

    jedoch sind selfpages/boxes in keinster art und weise in der db vorhanden; somit müsstest du die selfpages durch ein, von dir selbstentwickeltes, verfahren craw'len lassen um die inhalte in die suchmaske mit einzubinden;

    wobei ich mir einen solchen craw'ler als sehr schwer umzusetzen vorstelle;

    mfg
    scorp


    Zuletzt modifiziert von sCoRpIoN am 06.06.2006 - 12:23:13
    free-design: externer Link

    --## externer Link ##--
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    smepal Mitglied
    Registriert seit
    04.06.2006
    Beiträge
    13
    Beitragswertungen
    0 Beitragspunkte
    vielleicht wäre es einfacher, wenn die selfp auch in der Datenbank gespeichert wären, wie es zum Beispiel ja auch die News etc sind.
    Ist das denn realisierbar?
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    sCoRpIoN Mitglied
    Registriert seit
    03.03.2005
    Beiträge
    1.883
    Beitragswertungen
    0 Beitragspunkte
    realisierbar schon, allerdings müsste man dazu n komplett neustrukturiertes modul coden; und ob sich jemand dazu die mühe macht ist ne andere frage;

    mfg
    scorp
    free-design: externer Link

    --## externer Link ##--
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    smepal Mitglied
    Registriert seit
    04.06.2006
    Beiträge
    13
    Beitragswertungen
    0 Beitragspunkte
    also ich hätte schon mal ne Lösung für das durchsuchen der Dateien anzubieten. Allerdings weiß ich nicht in welche Datei ich das jetzt beim Ilchscript einbinden muss:
    <?php
    if ((isset($_POST['word'])) and (isset($_POST['file']))) 
    {
    
    $dir    = '/www/usersites/m-r/mgb/pub/include/contents/selfbp/selfp/';
    $files = scandir($dir);
    
    	foreach ($files as $filename)
    	{
    $file = "/www/usersites/m-r/mgb/pub/include/contents/selfbp/selfp/$filename";
    $handle = fopen ($file, "r");
    $string = fread ($handle, filesize ($file));
    if (eregi($_POST['word'], $string)) {
    echo '<a href="selfp/',$filename,'">',$filename,'</a><br>';
    }
    }
    }
    ?>
    <form id="form1" name="form1" method="post" action="suchen.php">
      <p>
        Keyword<input name="word" type="text" id="word" /><br />
        File
        <input name="file" type="text" id="file" /><br />
        <input type="submit" name="Submit" value="Suchen" />
    </p>
    </form>
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    sCoRpIoN Mitglied
    Registriert seit
    03.03.2005
    Beiträge
    1.883
    Beitragswertungen
    0 Beitragspunkte
    is ja schön wenn du sowas hast; aber angenommen du bindest dort rund 20 dateien ein und bei jeder suche muss diese 20 seiten wieder durchsucht werden? du kannst dir ja dann sicherlich vorstellen wie dein webspace bzw. server rumlaggen wird; du würdest praktisch selbst das perfekte mittel in deine page integrieren, um diese auch gleichzeitig lahmzulegen; RESPEKT^^

    ich dachte da schon an eine etwas ausgereiftere lösung, allerdings kostet die auch etwas;

    externer Link

    werde das ding in den nächsten tagen in unsere firmenpage einbinden und mal auf herz und nieren testen; aber ich denke mal, dass du einfach vom preis abgeschreckt sein wirst^^

    mfg
    scorp
    free-design: externer Link

    --## externer Link ##--
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    smepal Mitglied
    Registriert seit
    04.06.2006
    Beiträge
    13
    Beitragswertungen
    0 Beitragspunkte
    stimmt ich kaufe doch keine Suchmaschine für 100 $
    aber vielleicht kann mir trotzdem jemand sagen welche datei die suchanfragen des Ilchscriptes verarbeitet.
    Das Formular verweist auch nur auf index.php
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    sCoRpIoN Mitglied
    Registriert seit
    03.03.2005
    Beiträge
    1.883
    Beitragswertungen
    0 Beitragspunkte
    nunja ich würde mir mal die search.php im content ordner zu gemüte führen;

    mfg
    scorp
    free-design: externer Link

    --## externer Link ##--
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    smepal Mitglied
    Registriert seit
    04.06.2006
    Beiträge
    13
    Beitragswertungen
    0 Beitragspunkte
    ich habs mir mal angeschaut aber ich blicke da überhaupt niht durch!
    irgendwo in diesem Abschnitt wird doch bestimmt das Template geparst mit den Suchergebnissen. Weiß jemand wo? bzw kann mir jemand den Aufbau erklären?
    $tpl = new tpl ('search');
    $tpl->set ('size', 30);
    if ($such != 'augt' AND $such != 'aeit' AND $such != 'aubt') {
      $tpl->set_out('search',escape_for_fields($such),0);
    }
    
    if (!empty($such)) {
      $page = 1;
      if (isset($_GET['page'])) {
        $page = str_replace('-p','',$_GET['page']);
      }
      
      
      $limit = 25;  // Limit 
      $anfang = ($page - 1) * $limit;	
      
      if ($such == 'aubt' OR $such == 'augt' OR $such == 'aeit') {
        $s = "DISTINCT b.id as fid, a.name as titel, 'foru' as typ, a.id as id";
        $q = "select {SELECT}
          FROM prefix_topics a
            LEFT JOIN prefix_forums b ON b.id = a.fid
            LEFT JOIN prefix_posts c ON c.tid = a.id
          WHERE (b.view >= ".$_SESSION['authright']." OR b.reply >= ".$_SESSION['authright']." OR b.start >= ".$_SESSION['authright'].") 
             AND {WHERE}
          ORDER BY c.time DESC";
      }
      $x = time() - (3600 * 24 * 360);
      if ($such == 'aubt') {
        $where = "c.time >= ". $x ." AND a.rep = 0";
        $c = str_replace('{WHERE}',$where,str_replace('{SELECT}','COUNT(DISTINCT a.id)',$q));
        $gAnz  = db_result(db_query($c),0);
        $q     = str_replace('{WHERE}',$where,str_replace('{SELECT}',$s,$q));
      } elseif ($such == 'augt') {
        $where = "c.time >= ". $x ." AND c.time >= ".$_SESSION['lastlogin'];
        $gAnz  = db_result(db_query(str_replace('{WHERE}',$where,str_replace('{SELECT}','COUNT(DISTINCT a.id)',$q))),0);
        $q     = str_replace('{WHERE}',$where,str_replace('{SELECT}',$s,$q));
      } elseif ($such == 'aeit') {
        $where = "c.time >= ". $x ." AND c.erstid = ".$_SESSION['authid'];
        $gAnz  = db_result(db_query(str_replace('{WHERE}',$where,str_replace('{SELECT}',' COUNT(DISTINCT a.id)',$q))),0);
        $q     = str_replace('{WHERE}',$where,str_replace('{SELECT}',$s,$q));
       } else {
        $such = str_replace('-','',$such);
        $such = str_replace('=','',$such);
        $such = str_replace('&','',$such);
      
    	  $serar = explode(' ', $such);
        $str_forum = '';
        $str_news  = '';
        $str_downs  = '';
    	  foreach($serar as $v) {
    	    $str = str_replace('\'','',$v);
    		  $str = str_replace('"','',$str);
          $str = addslashes($str);
    		  if ( !empty($str) ) {
    		    $str_forum .= "txt LIKE '%".$str."%' AND ";
            $str_news  .= "news_text LIKE '%".$str."%' AND ";
            $str_downs  .= "`descl` LIKE '%".$str."%' AND ";
    		  }
    	  }
        
        $q = "(
          SELECT DISTINCT
            0 as fid,
            news_title as titel,
            'news' as typ,
            news_id as id,
            news_time as time
          FROM prefix_news
          WHERE (".$str_news." 1 = 1)
            AND (news_time >= ". $x .")
          
        ) UNION (
        
          SELECT DISTINCT
            prefix_topics.fid as fid,
            prefix_topics.name as titel,
            'foru' as typ,
            prefix_topics.id as id,
            time as time
          FROM prefix_posts
            LEFT JOIN prefix_topics ON prefix_topics.id = prefix_posts.tid
            LEFT JOIN prefix_forums ON prefix_forums.id = prefix_topics.fid
          WHERE (prefix_forums.view >= ".$_SESSION['authright']." OR prefix_forums.reply >= ".$_SESSION['authright']." OR prefix_forums.start >= ".$_SESSION['authright'].")
            AND (".$str_forum." 1 = 1)
            AND (time >= ". $x .")
          GROUP BY prefix_topics.id
    
        ) UNION (
        
          SELECT DISTINCT
            0 as fid,
            CONCAT( name, ' ', version ) AS titel,
            'down' as typ,
            id,
            UNIX_TIMESTAMP(time) as time
          FROM prefix_downloads
          WHERE (".$str_downs." 1 = 1)
            AND (time >= ". $x .")
        )
        
        ORDER BY time DESC";
              
        $gAnz = db_num_rows(db_query($q));
      }
    
      $q .= " LIMIT ".$anfang.",".$limit;
      
      $MPL = db_make_sites ($page , "" , $limit , "index.php?search=".urlencode($such)."&amp;page=", "", $gAnz );
      $tpl->set_ar_out(array('MPL'=>$MPL,'gAnz'=>$gAnz),1);
      
      $q = db_query($q);
      $class = '';
      while($r = db_fetch_assoc($q) ) {
        $class = ($class == 'Cmite' ? 'Cnorm' : 'Cmite' );
        $r['class'] = $class;
        if ($r['typ'] == 'foru') {
          $r['ctime'] = db_result(db_query("SELECT MAX(time) FROM prefix_posts WHERE tid = ".$r['id']),0,0);
          $r['ord'] = forum_get_ordner($r['ctime'],$r['id'],$r['fid']);
          $r['link'] = 'forum-showposts-'.$r['id'];
        } elseif ($r['typ'] == 'news') {
          $r['ord']  = 'ord';
          $r['link'] = 'news-'.$r['id'];
        } elseif ($r['typ'] == 'down') {
          $r['ord']  = 'ord';
          $r['link'] = 'downloads-show-'.$r['id'];
        }
        $tpl->set_ar_out($r,2);
      }
      $tpl->out(3);
    }
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    sCoRpIoN Mitglied
    Registriert seit
    03.03.2005
    Beiträge
    1.883
    Beitragswertungen
    0 Beitragspunkte
    zum erklären fehlt mir leider die zeit; jedoch sollteste mit hilfe der ilch-1.1-entwicklerdoku sehr viel weiter kommen;

    einfach mal durcharbeiten:
    externer Link

    mfg
    scorp
    free-design: externer Link

    --## externer Link ##--
    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    smepal Mitglied
    Registriert seit
    04.06.2006
    Beiträge
    13
    Beitragswertungen
    0 Beitragspunkte
    super vielen dank habs jetzt hingekriegt!
    0 Mitglieder finden den Beitrag gut.
  14. #14
    User Pic
    smepal Mitglied
    Registriert seit
    04.06.2006
    Beiträge
    13
    Beitragswertungen
    0 Beitragspunkte
    also so siehts jetzt aus:
    <?php
    /*----------Erweitertes Suchscript für Selfpages----------------*/
    $dir    = getcwd()."/include/contents/selfbp/selfp";
    $files = scandir($dir);
    
    foreach ($files as $filename)
    {
      $file = $dir ."/". $filename;
      $handle = fopen ($file, "r");
      $string = fread ($handle, filesize ($file));
      
      if (eregi($_GET['search'], $string)) 
    	{
    		$link = substr($filename , 0, -4);
    		$r['ord']  = 'ord';
    		$r['link'] = $link;
    		$r['titel'] = $link;
    		$class = ($class == 'Cmite' ? 'Cnorm' : 'Cmite' );
    		$r['class'] = $class;
    		$tpl->set_ar_out($r,2);
    	}
    } 
    
    /*------------by smepal-------v1.0-------------------------------*/
    ?>


    jetzt ist mir aufgefallen, dass auch dann ein ergebnis true zurückgegeben wird, wenn der String nur in einem längeren wocht enthalten ist!

    Z.B.
    Scharlachrot
    wenn ich jetzt nach rot suche liefert er mir trotzdem true.

    Wie kann ich das verhindern???


    Zuletzt modifiziert von smepal am 07.06.2006 - 19:26:31
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Kritik und Verbesserungen

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten