[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Suchindex, manche doppelt, manche gar nicht - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Torment0r
Beiträge: 39
Registriert: 8. Aug 2006, 17:48

Suchindex, manche doppelt, manche gar nicht

12. Jan 2007, 22:45

Hallo,

bei der suche kommen manche artikel doppelt und andere dafür gar nicht. beim suchindex erneuern hab ich auch so meine probleme, d.h. das script bricht ab. weiß jemand woran das liegen könnte?

kann man den suchindex ganz löschen und neu erstellen lassen und könnte mir jemand helfen, dieses modul so umzuschreiben, daß der cannot redeclare fehler nicht kommt?

Code: Alles auswählen


<?php

function sortArtName( $articleA, $articleB) {
   $nameA = $articleA->getName();
   $nameB = $articleB->getName();

   if ( $nameA == $nameB) {
      return 0;
   }

   $arr = array( $nameA, $nameB);
   sort( $arr, SORT_STRING);

   return $arr[0] == $nameA ? -1 : 1;
}


$cat = OOCategory::getCategoryById(REX_CATEGORY_ID);
$articles = $cat->getArticles( true);

usort( $articles, "sortArtName"); // sortieren

if (is_array($articles) && count( $articles) > 0) {
  echo '<ul class="article-list">';
  foreach ($articles as $article) {
    // aktuellen Artikel nicht anzeigen
    if( $article->getId() == REX_ARTICLE_ID) continue;
    
    // keine Startartikel anzeigen
    if ($article->isStartPage()) continue; 
    
    echo '<li><a href="'.$article->getUrl().'">'.$article->getName().'</a></li>';
  }
  echo '</ul>';
}

?> 
Das wäre echt supernett.

Danke und Gruß

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

13. Jan 2007, 14:35

Hi,

was hat der Code da oben mit dem Suchindex zu tun?

Wenn die Zeit nicht ausreicht, musst du die max_execution_time in der php.ini erhöhen..

Gruß,
Markus

ingoruck
Beiträge: 108
Registriert: 10. Aug 2006, 11:43
Wohnort: Berlin
Kontaktdaten: Website

13. Jan 2007, 14:52

wenn ich es richtig im hinterkopf habe: der suchindex löscht den Inhalt Index-tabelle und schreibt diese dann komplett neu.

Wenn die Versuche bei dir abbrechen, bleibt nur die Lösung von Kills. Wie viele artikel hast du denn? und wie hoch ist deine max_execution_time? (gibt der Befehl

Code: Alles auswählen

php_info ()
aus.)
www.new-urban-creation.de
Websites und Web-Anwendungen

Torment0r
Beiträge: 39
Registriert: 8. Aug 2006, 17:48

13. Jan 2007, 21:59

also, die max_execution_time liegt bei 90 sekunden.

ich habe o.g. Modul im Einsatz und bekomme den fehler

Fatal error: Cannot redeclare sortartname() (previously declared in...

Wenn ich das nach der Beschreibung ändere kommt der Fehler zwar nicht mehr, aber dafür läuft der suchindex nicht durch sondern bleibt stehen mit Fehler 500, aber wesentlich früher als nach 90 sekunden, nämlich nach 15 sekunden. deswegen weiß ich z.b. nicht, ob ich das richtig umgeschrieben habe. es geht um knapp 2000 artikel.

oder stimmt das so?

Code: Alles auswählen


<?php
if(!function_exists('sortArtName')) 
{
function sortArtName( $articleA, $articleB) { 
   $nameA = $articleA->getName(); 
   $nameB = $articleB->getName(); 

   if ( $nameA == $nameB) { 
      return 0; 
   } 

   $arr = array( $nameA, $nameB); 
   sort( $arr, SORT_STRING); 

   return $arr[0] == $nameA ? -1 : 1; 
} 
}
$cat = OOCategory::getCategoryById(REX_CATEGORY_ID); 
$articles = $cat->getArticles( true); 

usort( $articles, "sortArtName"); // sortieren 

if (is_array($articles) && count( $articles) > 0) { 
  echo '<ul class="article-list">'; 
  foreach ($articles as $article) { 
    // aktuellen Artikel nicht anzeigen 
    if( $article->getId() == REX_ARTICLE_ID) continue; 
    
    // keine Startartikel anzeigen 
    if ($article->isStartPage()) continue; 
    
    echo '<li><a href="'.$article->getUrl().'">'.$article->getName().'</a></li>'; 
  } 
  echo '</ul>'; 
} 



?> 


Torment0r
Beiträge: 39
Registriert: 8. Aug 2006, 17:48

13. Jan 2007, 23:07

Premature end of script headers

kommt als Fehlermeldung. Ist wohl doch ein Performance Problem. Kann man das vielleicht splitten oder so, also den Suchindex auf mehrere Male erneuern?

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

14. Jan 2007, 01:46


Torment0r
Beiträge: 39
Registriert: 8. Aug 2006, 17:48

14. Jan 2007, 12:55

danach bin ich durchaus vorgegangen :)

Torment0r
Beiträge: 39
Registriert: 8. Aug 2006, 17:48

14. Jan 2007, 15:05

Kann man den "Suchindex erneuern" auch als cronjob laufen lassen? Wie müßte das aussehen?

und noch was ganz blödes habe ich gerade festgestellt: wenn im artikelname ein hochkomma ' vorkommt, wird dieser nicht indexiert, und kann nachher nicht gefunden werden. das ist sehr schlecht. besteht eine möglichkeit, dies zu ändern?

z.B. bei: Côte d’Azur (Département Var)

Zurück zu „Allgemeines [R3]“