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


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
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 )
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.
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.