Wenn indexed_search nicht indiziert

Mittwoch, 08. Februar 2012

Das hier ist eine kleine Schritt-für-Schritt Checkliste um zu prüfen, warum indexed_search nicht funktioniert.

1. Prüfe, ob das indexing eingeschaltet ist.

Im TSsetup: page.config.index_enable = 1

2. Prüfe, das Caching deaktiviert wurde.

Die Seiteninhalte werden nur indiziert, wenn sie auch in Typo3 gecached werden, also in eine der Tabellen cf_cache… wandern. Der absolute indexed_search-Killer ist folglich $GLOBALS["TSFE"]->set_no_cache();
Eingrenzung:
Diese Zeile
if ($GLOBALS['TSFE']->no_cache) echo “No Cache ist aktiviert!”;
als letzte Zeile in die index.php von Typo3 einfügen. Wenn der Text beim Aufruf der Seite ausgegeben wird, dann nacheinander folgende Sache prüfen:

  • Ist unter den Seiteneigenschaften -> Verhalten -> Cache deaktiviert?
  • Gibt es im TSsetup diese beiden Zeilen?
    config.no_cache = 0
    config.cache = 1
  • Muss eine Extension speziell zum Cachen konfiguriert werden wie z.B. plugin.tt_news.allowCaching = 1
  • Ist eine Extension auf der Seite im Einsatz, die im Quelltext set_no_cache(); aufruft?

3. Enthält der Quelltext die Such-Marker?

Alle Texte, die von der indexed_search durchsucht werden sollen müssen innerhalb dieser Marker sein:
<!–TYPO3SEARCH_begin–>
… dieser Text wird indiziert …
<!–TYPO3SEARCH_end–>

Typo3 Cache-Tabellen regelmäßig löschen

Zum Debuggen hilft mir auch dieses kleine PHP-Script, dass alle Cache-Tabellen und Indizierungen löscht. Eignet sich auch gut zum regelmäßigen Leeren der Cache-Tabellen in Typo3, falls z.B. eine Cache-Killer-Extension wie Kaldender “cal” im Einsatz ist: Dieses Script als Cron-Job (evtl. ohne die index_…-Tabellen) regelmäßig aufrufen…

<?php
	require_once('typo3conf/localconf.php');
	$clean = array(
		'cache_extensions', 'cache_imagesizes', 'cache_md5params', 'cache_treelist', 'cache_typo3temp_log', 'cf_cache_hash', 'cf_cache_hash_tags', 'cf_cache_pages',
		'cf_cache_pagesection', 'cf_cache_pagesection', 'cf_cache_pagesection_tags', 'cf_cache_pages_tags',
		'index_debug', 'index_fulltext', 'index_grlist', 'index_phash', 'index_rel', 'index_section', 'index_stat_search', 'index_stat_word', 'index_words'	
	);
 
	$link = mysql_connect($typo_db_host, $typo_db_username, $typo_db_password);
	mysql_select_db( $typo_db, $link );
 
	if (!$link) die("Could not connect to DB");
 
	foreach ($clean as $tbl) {
		$sql = "TRUNCATE $tbl;";
		$result = mysql_query( $sql );
		if (!$result) die("Could not execute query!".mysql_error());
	}
 
	mysql_close($link);
?>