Crawler

Um nicht jede Seite im Frontend aufrufen zu müssen, daß sie in der indizierten Suche aufgenommen wird, kann man den crawler einsetzen.

Erstellt: 10/2015| Geändert: 10/2015

Indexing Configurations

Ich habe nun die Indexing Configurations entdeckt. Besser ist das. Die News aus der Konfiguration (im Gegensatz zu der Variante unten) rausnehmen. Der Crawler verwendet die Kombination von Indexing Configurations (Auswahl der Seiten) und der crawlerConfig (Auswahl der Parameter Language z.B.):

#--------------------------------
# Indexed Search (Crawler)
#--------------------------------
tx_crawler.crawlerCfg.paramSets {

  # User in no group
  language = &L=[|_TABLE:pages_language_overlay;_FIELD:sys_language_uid]
  language.procInstrFilter = tx_indexedsearch_reindex
  language.baseUrl = localhost/developer/
 
  # User in group 1
  group1 = &L=[|_TABLE:pages_language_overlay;_FIELD:sys_language_uid]
  group1.procInstrFilter = tx_indexedsearch_reindex
  group1.baseUrl = localhost/developer/
  group1.userGroups = 1
}

 Dafür dann eine Indexing Configuration anlegen

Erstellt: 07/2010| Geändert: 03/2023

Hier die Texte zum kopieren:

&tx_ttnews[tt_news]=###UID###"
title,subtitle,bodytext

..und der geschedulte CLI Job sollte alles Indizieren.

Nur 3 Ebenen

Das nervt: Also in typo3/sysext/indexed_search/locallang_db.xml einfügen:

<label index="index_config.depth.I.999">Infinite</label>

und in tca.php:

Array('LLL:EXT:indexed_search/locallang_db.php:index_config.depth.I.999', '999'),

..und schon kann man "unendlich" für die Rekursion auswählen (infinite).

FE Indexing ausschalten

Dies sollte man tun um keine doppelten Einträge zu bekommen. Verwaltungswerkzeuge-> Einstellungen -> Extension Configuration -> indexed_search

basic.useCrawlerForExternalFiles = 1 (Use "crawler" extension to index external files )
basic.disableFrontendIndexing = 1 (Disable Indexing in Frontend )

Erstellt: 03/2023| Geändert: 03/2023

Crawler Konfiguration

Dies hier ist die erste Variante die ich versucht habe - alles per crawlerConfig. Besser ist die Verwendung von Indexing Configurations (siehe oben).

Nachtrag 2023: Inzwischen ist die Konfiguration des Crawlers wohl wesentlich besser. Ich habe es noch nicht ausprobiert, Infos dazu in der Doku https://docs.typo3.org/p/tomasnorre/crawler/11.0/en-us/Configuration/ExtensionManagerConfiguration/Index.html

Hier meine Konfiguration von "damals". Ich werde es bei Gelegenheit mal ausprobieren und hier dann aktualisieren.

Config

Folgendes in das TS der Root Seite  aufnehmen:

#--------------------------------
# Indexed Search (Crawler)
#--------------------------------
tx_crawler.crawlerCfg.paramSets {

  # User in no group
  language = &L=[|_TABLE:pages_language_overlay;_FIELD:sys_language_uid]
  language.procInstrFilter = tx_indexedsearch_reindex, tx_indexedsearch_crawler
  language.baseUrl = localhost/developer/
 
  # User in group 1
  group1 = &L=[|_TABLE:pages_language_overlay;_FIELD:sys_language_uid]
  group1.procInstrFilter = tx_indexedsearch_reindex, tx_indexedsearch_crawler
  group1.baseUrl = localhost/developer/
  group1.userGroups = 1
 
  # User in group 2
  group2 = &L=[|_TABLE:pages_language_overlay;_FIELD:sys_language_uid]
  group2.procInstrFilter = tx_indexedsearch_reindex, tx_indexedsearch_crawler
  group2.baseUrl = localhost/developer/
  group2.userGroups = 2
  
  # User in group 3
  group3 = &L=[|_TABLE:pages_language_overlay;_FIELD:sys_language_uid]
  group3.procInstrFilter = tx_indexedsearch_reindex, tx_indexedsearch_crawler
  group3.baseUrl = localhost/developer/
  group3.userGroups = 3
 
  # User in group 2 and 3
  group23 = &L=[|_TABLE:pages_language_overlay;_FIELD:sys_language_uid]
  group23.procInstrFilter = tx_indexedsearch_reindex, tx_indexedsearch_crawler
  group23.baseUrl = localhost/developer/
  group23.userGroups = 2,3
 
 # --- News ----
   # User in no group
  news_language = &tx_ttnews[tt_news]=[_TABLE:tt_news;_PID:134;_FIELD:uid] &L=[|_TABLE:pages_language_overlay;_FIELD:sys_language_uid]
  news_language.procInstrFilter = tx_indexedsearch_reindex, tx_indexedsearch_crawler
  news_language.baseUrl = localhost/developer/
 
  # User in group 1
  news_group1 = &tx_ttnews[tt_news]=[_TABLE:tt_news;_PID:134;_FIELD:uid] &L=[|_TABLE:pages_language_overlay;_FIELD:sys_language_uid]
  news_group1.procInstrFilter = tx_indexedsearch_reindex, tx_indexedsearch_crawler
  news_group1.baseUrl = localhost/developer/
  news_group1.userGroups =1
  news_group1.pidsOnly = 138
  news_group1.cHash = 1
 
  # User in group 2
  news_group2 = &tx_ttnews[tt_news]=[_TABLE:tt_news;_PID:134;_FIELD:uid] &L=[|_TABLE:pages_language_overlay;_FIELD:sys_language_uid]
  news_group2.procInstrFilter = tx_indexedsearch_reindex, tx_indexedsearch_crawler
  news_group2.baseUrl = localhost/developer/
  news_group2.userGroups = 2
  news_group2.pidsOnly = 138
  news_group2.cHash = 1
  
  # User in group 3
  news_group3 = &tx_ttnews[tt_news]=[_TABLE:tt_news;_PID:134;_FIELD:uid] &L=[|_TABLE:pages_language_overlay;_FIELD:sys_language_uid]
  news_group3.procInstrFilter = tx_indexedsearch_reindex, tx_indexedsearch_crawler
  news_group3.baseUrl = localhost/developer/
  news_group3.userGroups = 3
  news_group3.pidsOnly = 138
  news_group3.cHash = 1
 
  # User in group 2 and 3
  news_group23 = &tx_ttnews[tt_news]=[_TABLE:tt_news;_PID:134;_FIELD:uid] &L=[|_TABLE:pages_language_overlay;_FIELD:sys_language_uid]
  news_group23.procInstrFilter = tx_indexedsearch_reindex, tx_indexedsearch_crawler
  news_group23.baseUrl = localhost/developer/
  news_group23.userGroups = 2,3
  news_group23.pidsOnly = 138
  news_group4.cHash = 1
}

Einen User im Backend anlegen namens  _cli_crawler mit beliebigen Passwort und ohne Zugriffsrechte.

Erklärung

Das Indizieren muss für alle Gruppen Kombinationen konfiguriert werden die möglich sind. Andernfalls wird ein User der in den gruppen 1,2,3 ist Dokumente nicht finden die von einem User indiziert wurden der in den Gruppen 1,2 ist.

Erstellt: 07/2010| Geändert: 03/2023

Scheduling

Am einfachsten geht dies über einen Eintrag im Scheduler von TYPO3 siehe https://docs.typo3.org/p/tomasnorre/crawler/11.0/en-us/Scheduler/Index.html. Alternativ auch über command controller, cron job oder manuell im Backend. Details siehe auch in der verlinkten Doku.

Erstellt: 07/2010| Geändert: 03/2023