Zum Inhalt springen

indexed_search und crawler

Erstellt am 30. November 2007 · 38 Antworten · letzte Antwort am 10. Februar 2010 · Seite 2 von 2

Tags: Suche, Frage

jonas8 ·

Hi

Und funktioniert es jetzt besser?

Ja, das kann schon Probleme machen, mit soviel Gruppen. Einfach ausprobieren und testen. Hatte es bis jetzt nur mit einer Gruppe zu tun.

Mit so viel News Ordner habe ich das noch nie gemacht. Sind es denn auch viele News? Eventuell könnte man mehrere Einzalansichten machen und die Indexierungseinstellungen auf diese Einzelansichten verteilen.

Gruss Jonas

leave- ·

Vielen Dank. Er Indexiert jetzt alles. Es sind viele News und die einzelen Fachbreiche sollen auch nur für Ihren Bereich Zugriffsrechte bekommen.
Komisch ist allerdings, dass ich bei der Indexierung nur auf den News-Ordner EDV verwiesen habe, allerdings wird der Artikel in der Finanzabteilung, welchen ich gerade angelegt habe, auch angezeigt.

Also braucht man anscheinend nur ein Mal eine Indexierung für alle Ordner vorzunehmen. Ich werde es aber noch mal testen und berichten.

Ein Problem habe ich noch mit dem Löschen alter Artikel.
Die Suchmschine findet News die es schon seit 2-3 Wochen nicht mehr gibt??
Das Problem scheint ja nicht neu zu sein.

Eine Idee?

Gruß Thomas

jonas8 ·

Hmm

Ich würde mal den Index komplett löschen und neu indexieren lassen.
Und danach die Sache beobachten, die nächsten zwei drei Tage rein schauen.

Indexierung löschen per: 'Info' 'Startseite' 'Indexsuche'
oder per phpmyadmin die Tabellen index_ ... leeren. (nicht löschen)

Zwischendurch auch den Crawler-Cache löschen,
z.B. per Backend 'Info' 'Site Crawler' 'Crawler log' 'Flush entries'
oder per phpmyadmin die Tabelle tx_crawler_queue leeren. (nicht löschen)

Hier ist ein guter Beitrag zu 'TYPO3 Entrümpeln'
http://typo3blogger.de/turchen-2-tutorial-typo3-entrumpeln/

Gruss Jonas

leave- ·

Hallo jonas8,

leider war ich länger krank.

Die Suchmschine funktioniert, ich habe letzlich bei allen Rubriken eine Index angelegt.

Leider werden bei der Suche die gleichen Artikel mehrmals angezeigt.
Hast Du eine Idee warum?

Löschen kann ich die alten Einträge nur manuel.
Der Cronjob geht leider nicht:

Crawler-extension und zugehörige DB Tabelle (tx_crawler_queue) ebenfalls leeren.

Ich mach das alles mit einem kleinen Cronjob:

#! /bin/sh
#
# loescht die cache & index tabellen

# declaring the constants
PATH=/bin:/sbin:/usr/bin:/usr/sbin
MYSQL_USER=”DB_USERXX”
MYSQL_USER_PASSWORD=”XXX”
MYSQL_DATABASE=”typo3″
SCRIPT_NAME=”mysql_cache_index_leeren_cmds”

mysql –user=$MYSQL_USER –password=$MYSQL_USER_PASSWORD –database=$MYSQL_DATABASE –force < /mnt/hdd2/scripts/$SCRIPT_NAME;

// Script mysql_cache_index_leeren_cmds
// leert mit TRUNCATE die entsprechenden Tabellen + quit

TRUNCATE cache_extensions \G
TRUNCATE cache_hash \G
TRUNCATE cache_imagesizes \G
TRUNCATE cache_md5params \G
TRUNCATE cache_pages \G
TRUNCATE cache_pagesection \G
TRUNCATE cache_typo3temp_log \G
TRUNCATE index_fulltext \G
TRUNCATE index_grlist \G
TRUNCATE index_phash \G
TRUNCATE index_rel \G
TRUNCATE index_section \G
TRUNCATE index_words \G
TRUNCATE tx_crawler_queue \G
\q

Vielen Dank für die Hilfe

jonas8 ·

Hallo Leave-

Wie läuft es? Ist mit deiner indexed_serch alles okay?

Habe mal wieder daran rumgeschraubt und jetzt auch das Skript zum Löschen der Caches ausprobiert. Nach langem rummachen funktioniert es nun.

Wie steht es bei dir?

Gruss Jonas

Wool ·

Hallo Leute,

ich hab auch lange über den Gruppen-Richtlinien gebrütet und mir immer gedacht, das is doch umständlich, und bei nicht vorkommenden Kombinationen völlig sinnlos.

Mit folgendem PHP-Skript werden die Gruppen und Gruppen-Kombinationen aus der fe_groups- und fe_users-Tabelle ausgelesen und die Konfigurationen in das TSconfig-Feld der root-Seite eingefügt. (D.h. nur Kombinationen die auch bestehen werden verarbeitet.)

!!! das Feld wird mit dieser Methode überschrieben !!!
(diverse Änderungen an IDs sind evtl. natürlich noch nötig) ;-)

# Datenbankverbindung ----------------------------------
list($dbserver,$dbuser,$dbpass,$dbname) = array('localhost','user','password','dbname');
if (!$dbh = mysql_connect($dbserver,$dbuser,$dbpass)) {
  die ("Schwerer Fehler!\nVerbindung zum Datenbank-Server fehlgeschlagen.\nMySQL: ".mysql_errno()." - ".mysql_error()."\n");
}
if (!mysql_select_db($dbname,$dbh)) {
  die ("Schwerer Fehler!\nKann Datenbank nicht &ouml;ffnen.\nMySQL: ".mysql_errno()." - ".mysql_error()."\n");
}

# Werteermittlung ----------------------------------
$upd_val = "# !!!! Dieses Feld wird automatisch ueberschrieben !!!!";
$upd_val .= "\ntx_crawler.crawlerCfg.paramSets {";
$upd_val .= "\n  content = &L=[|_TABLE:pages_language_overlay;_FIELD:sys_language_uid]";
$upd_val .= "\n  content.procInstrFilter = tx_indexedsearch_reindex, tx_cachemgm_recache, tx_indexedsearch_crawler";
$upd_val .= "\n  content.baseUrl = http://address/";
# News ----------------------------------
$upd_val .= "\n\n  ttnews = &tx_ttnews[tt_news]=[_TABLE:tt_news;_PID:45]";
$upd_val .= "\n  ttnews.procInstrFilter = tx_indexedsearch_reindex, tx_cachemgm_recache";
$upd_val .= "\n  ttnews.pidsOnly = 37";
$upd_val .= "\n  ttnews.cHash = 1";
$upd_val .= "\n  ttnews.baseUrl = http://address/";
$upd_val .= "\n}";

$upd_val .= "\n# Einzelgruppen";
  $done = array();
  $Q = "SELECT uid FROM fe_groups WHERE deleted=0 ";
  if(!$R = mysql_query($Q,$dbh)) {
    die("MySQL: ".mysql_errno()." - ".mysql_error()."\n".$Q."\nErr: SELECT Einzelgruppen - Crawler\n");
  } else {
    if(mysql_num_rows($R) > 0) {
      while(list($uid) = mysql_fetch_row($R)) {
        $upd_val .= "\ntx_crawler.crawlerCfg.paramSets.grp".$uid." < tx_crawler.crawlerCfg.paramSets.content";
        $upd_val .= "\ntx_crawler.crawlerCfg.paramSets.grp".$uid.".userGroups = ".$uid;
        $done[] = $uid;
      }
    } else { $upd_val .= "\n# ! FEHLER ! Keine Einzelgruppe gefunden !"; }
    mysql_free_result($R);
  }

$upd_val .= "\n# Multigruppen";
  $Q = "SELECT DISTINCT usergroup FROM fe_users WHERE deleted=0 ";
  if(!$R = mysql_query($Q,$dbh)) {
    die("MySQL: ".mysql_errno()." - ".mysql_error()."\n".$Q."\nErr: SELECT Multigruppen - Crawler\n");
  } else {
    if(mysql_num_rows($R) > 0) {
      while(list($grps) = mysql_fetch_row($R)) {
        $wert = '';
        $gr   = array();
        $gr   = explode(',',$grps);
        if(sizeof($gr) > 0 && $gr[0] > 0) {
          sort($gr);
          $wert = '0,-2,'.implode(',',$gr);
          if(!in_array($wert,$done)) {
            $upd_val .= "\ntx_crawler.crawlerCfg.paramSets.multi".str_replace(',','',$wert)." < tx_crawler.crawlerCfg.paramSets.content";
            $upd_val .= "\ntx_crawler.crawlerCfg.paramSets.multi".str_replace(',','',$wert).".userGroups = ".$wert;
            $done[] = $wert;
          }
        }
      }
    } else { $upd_val .= "\n# Keine Multigruppe gefunden !"; }
    mysql_free_result($R);
  }
$upd_val .= "\n";

$U = "UPDATE pages SET TSconfig='$upd_val' WHERE uid=1 ";
if(!$uR = mysql_query($U,$dbh)) { die("MySQL: ".mysql_errno()." - ".mysql_error()."\n".$U."\nErr: UPDATE Gruppenregeln - Crawler\n"); }

exit;

Dieses Skript in eine PHP-Datei und per crontab ausführen und man braucht sich um die Crawler-Config nichtmehr kümmern.

Hoffe das hilft jemandem...

Wool ·

Hallo nochmal,

so... nu hab ich mich lange genug rumgeärgert...

Indexierung und Caching läuft per Crawler (nach Eurer Beschreibung mit der "Indexing configuration") findet er mir auch die News und die fe_user. (Database records)

Probleme hab ich nur mit den Seiteninhalten ! (Page tree)
Egal mit welcher Benutzergruppe/-nkombination ich angemeldet bin, die Suche gibt mir immer "No Result found" aus.
Erstelle ich eine "Indexing configuration" für "Database records" und gebe die Tabelle "Seiteninhalt" (also: tt_content) an dann findet man über die Indexed_search auch die entsprechenden Einträge der Seite.

Nu isses aber ein wenig umständlich, wenn man für jede Seite eine Index-Config erstellen soll...

Hat da evtl. jemand nen Tipp?

Ach ja... folgende Fehlermeldung gibt die Cron bei der "Page tree"-Config aus: (anscheinend der Grund für mein Problem?)

Cron-Fehler:
PHP Warning: Missing argument 2 for tx_crawler_lib::getUrlsForPageRow(), called in .../typo3_src-4.2.8/typo3/sysext/indexed_search/class.crawler.php on line 466 and defined in .../typo3conf/ext/crawler/class.tx_crawler_lib.php on line 233

Kann mir da einer helfen? 😢

arag0rn2k7 ·

[​quote="Wool"]

Ach ja... folgende Fehlermeldung gibt die Cron bei der "Page tree"-Config aus: (anscheinend der Grund für mein Problem?)

Cron-Fehler:
PHP Warning: Missing argument 2 for tx_crawler_lib::getUrlsForPageRow(), called in .../typo3_src-4.2.8/typo3/sysext/indexed_search/class.crawler.php on line 466 and defined in .../typo3conf/ext/crawler/class.tx_crawler_lib.php on line 233

Hallo Wool,

das ist ein Bug im Crawler 3.0:

Hier das Fix: Geh in die class.tx_crawler_lib.php line 233 und ändere

function getUrlsForPageRow(array $pageRow, &$skipMessage)

in

function getUrlsForPageRow(array $pageRow, &$skipMessage = '')
arag0rn2k7 ·

Ich habe ein anderes Problem. Bei mir berücksichtigt der Crawler nicht die fe_group der einzelnen tt_news -> somit sind die gesamten privaten news über die Suche für nicht eingeloggt User zu finden!
Es scheint mir, als werden nur die Benutzergruppen der Listen-Ansicht-Seite(in dem Falle öffentlich) kontrolliert aber nicht jeder einzelnen News 🙁

Woran kann das liegen?

jonas8 ·

Hallo Wool

Nu isses aber ein wenig umständlich, wenn man für jede Seite eine Index-Config erstellen soll...

Hast du die TSconfig zum crawler bei den Seiteneigenschaften der root Seite?

Gruss Jonas

Wool ·
arag0rn2k7 schrieb

Hallo Wool,
das ist ein Bug im Crawler 3.0:

Hier das Fix: Geh in die class.tx_crawler_lib.php line 233 und ändere

function getUrlsForPageRow(array $pageRow, &$skipMessage)

in

function getUrlsForPageRow(array $pageRow, &$skipMessage = '')

Danke, die Fehlermeldung wird nun nichtmehr ausgegeben 🙂

Leider finddet er trotzdem nix...

jonas8 schrieb

Hast du die TSconfig zum crawler bei den Seiteneigenschaften der root Seite?

natürlich...

tx_crawler.crawlerCfg.paramSets {
  content = &L=[|_TABLE:pages_language_overlay;_FIELD:sys_language_uid]
  content.procInstrFilter = tx_cachemgm_recache, tx_indexedsearch_reindex, tx_indexedsearch_crawler
  content.baseUrl = http://meinetestdomain/folder/

  ttnews = &tx_ttnews[tt_news]=[_TABLE:tt_news;_PID:45]
  ttnews.procInstrFilter = tx_cachemgm_recache,tx_indexedsearch_reindex
  ttnews.pidsOnly = 37
  ttnews.cHash = 1
  ttnews.baseUrl = http://meinetestdomain/folder/
}
# Einzelgruppen
tx_crawler.crawlerCfg.paramSets.grp1 < tx_crawler.crawlerCfg.paramSets.content
tx_crawler.crawlerCfg.paramSets.grp1.userGroups = 0,-2,1
tx_crawler.crawlerCfg.paramSets.grp2 < tx_crawler.crawlerCfg.paramSets.content
tx_crawler.crawlerCfg.paramSets.grp2.userGroups = 0,-2,2
tx_crawler.crawlerCfg.paramSets.grp3 < tx_crawler.crawlerCfg.paramSets.content
tx_crawler.crawlerCfg.paramSets.grp3.userGroups = 0,-2,3
tx_crawler.crawlerCfg.paramSets.grp4 < tx_crawler.crawlerCfg.paramSets.content
tx_crawler.crawlerCfg.paramSets.grp4.userGroups = 0,-2,4
tx_crawler.crawlerCfg.paramSets.grp5 < tx_crawler.crawlerCfg.paramSets.content
tx_crawler.crawlerCfg.paramSets.grp5.userGroups = 0,-2,5
# Multigruppen
tx_crawler.crawlerCfg.paramSets.multi123 < tx_crawler.crawlerCfg.paramSets.content
tx_crawler.crawlerCfg.paramSets.multi123.userGroups = 0,-2,1,2,3
tx_crawler.crawlerCfg.paramSets.multi15 < tx_crawler.crawlerCfg.paramSets.content
tx_crawler.crawlerCfg.paramSets.multi15.userGroups = 0,-2,1,5
jonas8 ·

versuche es zuerst ohne gruppen und ohne news. funktioniert es dann?

tx_crawler.crawlerCfg.paramSets {
  content = &L=[|_TABLE:pages_language_overlay;_FIELD:sys_language_uid]
  content.procInstrFilter = tx_indexedsearch_reindex
  content.baseUrl = http://www.domain.ch/
}

ist die site mehrsprachig? wenn nicht genügt auch ein:

tx_crawler.crawlerCfg.paramSets {
  content = 
  content.procInstrFilter = tx_indexedsearch_reindex
  content.baseUrl = http://www.domain.ch/
}
Wool ·

Hallo,

leider kann ich es nicht ohne Gruppen machen, da es sich um eine Seite handelt, die nur per Login erreichbar ist.

Und ja, sie ist mehrsprachig, sonst bräuchte ich das L ja nicht 😉

Ich hab es auch schon mal mit er Crawler-Configuration versucht, aber da kann ich leider keine fe_groups auswählen (sondern nur BE_groups)...

So langsam überleg ich mir ein Skript zu basteln, dass mir die Indexing-Configurations - Database records - Page-content für die einzelnen Seiten automatisch einfügt, da es ja mit jenen funktioniert...

Ich verzweifel so langsam...

Wool ·

Upsa... fast übersehen:

arag0rn2k7 schrieb

Ich habe ein anderes Problem. Bei mir berücksichtigt der Crawler nicht die fe_group der einzelnen tt_news -> somit sind die gesamten privaten news über die Suche für nicht eingeloggt User zu finden!
Es scheint mir, als werden nur die Benutzergruppen der Listen-Ansicht-Seite(in dem Falle öffentlich) kontrolliert aber nicht jeder einzelnen News 🙁

Woran kann das liegen?

Hast du schonmal probiert die Gruppen den News-Regeln mitzugeben, analog dem normalen Conten-Regeln?

jonas8 ·

So langsam überleg ich mir ein Skript zu basteln, dass mir die Indexing-Configurations - Database records - Page-content für die einzelnen Seiten automatisch einfügt, da es ja mit jenen funktioniert...
Ich verzweifel so langsam...

Ist natürlich auch eine Möglichkeit.

Versuche es mal damit:

tx_crawler.crawlerCfg.paramSets {
  content = &L=[|_TABLE:pages_language_overlay;_FIELD:sys_language_uid]
  content.procInstrFilter = tx_indexedsearch_reindex
  content.baseUrl = http://www.domain.ch/

  # crawler für User der FE-Gruppe 1
  gruppe1 < tx_crawler.crawlerCfg.paramSets.content
  gruppe1.userGroups = 1
}

So läufts bei mir mit einer Gruppe

Wool ·

Hallo jonas8,

ich probier es grad mit Deiner Beschreibung, jedoch denke ich, dass das auch nix bringt, da es sich nur um eine andere Schreibweise handelt.
(er crawlt mir grad die Seite, also mal sehen...)

Im übrigen sieht so die Zeile für die Queue in meiner crontab aus, vielleicht liegt da der Fehler:

/usr/bin/php5 -f /Pfad/typo3/cli_dispatch.phpsh crawler_im 3 -d 99 -n 1000 -o queue -conf content,ttnews,verschiedene_gruppen

ACHTUNG: Crawler-Version: 3.0.0...

Das lustige ist, dass er mir alles crawlt ,cached und indexiert, aber keine results bei der Suche ausgibt... (Ausnahme: News und fe_user, da hierfür die Index-Config für DB-records angegeben wurde, scheinbar hat die Index-Config "page tree" keine Auswirkungen auf die Suchergebnisse !!! )

Meine Seite zeigt einen Login (wenn nicht angemeldet) und die Home- und Unterseiten (wenn angemeldet)...

HEUL !

[EDIT:]
ja... wie gedacht... selbes Ergebnis... 😢

mrgaribaldi ·
sventb schrieb

Hi Jonas,

nachdem du das News-Plugin erstellt hast, mußt du auf die Seite, auf der die Detail-Ansicht der News angezeigt wird, den Datensatz "Indexierungseinstellungen" anlegen, Typ "Datenbank Datensätze", "News" als "Zu indexierende Tabelle" auswählen, als Quell-Seite die Seite mit den News-Datensätzen auswählen, in Felder kommt "title,subtitle,bodytext" und in GET-Parameter-String "&tx_ttnews[tt_news]=###UID###".

Jetzt kannst du die Indexierung drüberlaufen lassen und die News sollten indexiert werden. Aber wenn du eine News löscht und die Indexierung nochmal drüber laufen läßt, ist die Detailansicht der News noch immer im Index.

Danke für deine Hilfe.

Hi,

die Beiträge hier haben mir sehr geholfen.
Jedoch habe ich bei der Indexierung der News (tt_news) noch das Problem, das keine Dateianhänge (PDF etc.) indexiert werden. Also generell klappt das indexieren von Dateianhängen richtig, nur bei den News nicht.

Hat jemand einen Tipp?