[TYPO3-german] indexed search, meta description und tt_news

Volker Golbig typo3 at machwert.de
Fri Jul 13 16:46:53 CEST 2007


Hallo Michael,

nochmal zu der Änderung zur Performance-Steigerung:

in der typo3/sysext/indexed_search/pi/class.tx_indexedsearch.php 
ungefähr Zeile 820 sollte muss case 1 bis 3 aukommentiert werden und 
case 10 noch angepast werden, so dass es dann so aussehen sollte:

// Perform search for word:
			switch($theType)	{

/*
  * can't see any difference in this cases, but Kaspar might know
				case '1':
					$wSel = "IW.baseword LIKE 
'%".$GLOBALS['TYPO3_DB']->quoteStr($sWord, 'index_words')."%'";
					$res = $this->execPHashListQuery($wSel,' AND is_stopword=0');
				break;
				case '2':
					$wSel = "IW.baseword LIKE '".$GLOBALS['TYPO3_DB']->quoteStr($sWord, 
'index_words')."%'";
					$res = $this->execPHashListQuery($wSel,' AND is_stopword=0');
				break;
				case '3':
					$wSel = "IW.baseword LIKE 
'%".$GLOBALS['TYPO3_DB']->quoteStr($sWord, 'index_words')."'";
					$res = $this->execPHashListQuery($wSel,' AND is_stopword=0');
				break;
*/
				case '1':
				case '2':
				case '3':
					$wSel='match(IW.baseword) 
against("'.$GLOBALS['TYPO3_DB']->quoteStr($sWord, 'index_words').'")';
					$res = $this->execPHashListQuery($wSel,' AND is_stopword=0');
					break;		
				case '10':
					$wSel = 'IW.metaphone = '.$this->indexerObj->metaphone($sWord);
					$res = $this->execPHashListQuery($wSel,' AND is_stopword=0');
				break;
				case '20':
					$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
								'ISEC.phash',
								'index_section ISEC, index_fulltext IFT',
								'match(IFT.fulltextdata) 
against(\''.$GLOBALS['TYPO3_DB']->quoteStr($sWord, 
'index_fulltext').'\') AND
									ISEC.phash = IFT.phash
									'.$this->sectionTableWhere(),						
								'ISEC.phash'
							);
					$wSel = '1=1';
					if ($this->piVars['type']==20)	$this->piVars['order'] = 'mtime';	 
// If there is a fulltext search for a sentence there is a likeliness 
that sorting cannot be done by the rankings from the rel-table (because 
no relations will exist for the sentence in the word-table). So 
therefore mtime is used instaed. It is not required, but otherwise some 
hits may be left out.
				break;
				default:
					$wSel = 'IW.wid = '.$hash = $this->indexerObj->md5inthash($sWord);
					$res = $this->execPHashListQuery($wSel,' AND is_stopword=0');
				break;
			}

...


Weiterhin muss wie beschreiben z.b mittels phpmyadmin-Interface der 
Index-Typ des Indizes fulltext in der Tabelle index_fulltext auf 
FULLTEXT gesetzt werden, sowie in der Inidize baseword in der Tabelle 
index_words auf FULLTEXT.

In der t.dev-Liste haben sie lange darüber diskutiert, wie es 
integrierbar ist. Problem ist wohl, dass der FULLTEXT-Index in anderen 
DB-Systemen nicht unterstützt wird, und die Sache ja kompatibel bleiben 
soll. Es gab ein paar gute Lösungsansätze und irgendwann wirds sicher 
konfigurierbar.

Noch zu der Frage:
 > Geht eine täglich Re-Indizierung nicht ziemlich auf en Traffic bzw.
 > Serverperformance? Ganz davon abgesehen, dass ich von cronjob's auch
 > nicht viel weiss... Wie sähe denn so ein cronjob aus?

Sinnvollerweise realisiert man dass so, dass die Re-Indexierung in der 
Nacht läuft. Weiterhin kann man dann ausschalten, dass die Seiten im 
Frontend überhaupt indexiert werden - bringt also sogar einen 
Performance Vorteil.

Von sinnvollen Alternativen weiß ich nix, aber vielleicht wer anders?

Cheerio
Volker


Michael Haugg schrieb:
> Hallo Volker,
> 
> vielen Dank für Deine detaillierte Antwort.
> 
>> Diff for TYPO3 4.0.5 can be found here:
>> http://bugs.typo3.org/view.php?id=5089
>> "
>>
>> Habe das bereits erfolgreich umgesetzt, und die Performance-Steigerung 
>> ist riesig. Leider ist damit aber keine Teilwortsuche mehr möglich. 
>> Also eine Suche nach "Typo" liefert kein Ergebnis, wenn nur "Typo3" im 
>> Inhalt vorkommt.
> 
> Damit könnte ich zur Not leben.
> 
>> Nochmal eine kurze Beschreibung:
>> 1. Da ich nicht überall SSH Zugang hab, und nicht sicher war, dass das 
>> diff auch für meine aktuelle indexed_search Version taugt, hab ich ins 
>> diff-File geschaut, und in der entsprechenden indexed_search Datei 
>> lediglich die Änderung vorgenommen. War nur eine if-Abrage, die 
>> geändert werden musste soweit ich mich erinnere.
>>
>> 2. Per phpmyadmin habe ich die einen FULLTEXT Index in den 
>> index_fulltext und index_words Tabellen gesetzt.
>>
>> Das wars auch schon.
> 
> O je, wenn's sonst nichts ist ;-) ähem... meine Programierkenntnisse 
> sind doch eher bescheiden. D. h. wenn mir einer sagt, ich soll was 
> auskommentieren, krieg ich das so grad noch hin, aber was ich mit 
> irgendwelchen diff-Dateien genau machen soll ist mir nicht ganz klar :-(
> 
>> zu Punkt 2: "abenteuerliche" Suchergebnisse"
>> Das Problem kenne ich - tritt bei allen meinen indexed_search 
>> Installationen auf. Würde mich auch interessieren, ob jemand weiß, wie 
>> es zustande kommt.
> 
> Bin insofern beruhigt, dass es dann wohl nicht an mir liegt; wäre 
> wirklich interessant zu wissen ob andere User das Problem auch haben.
> 
>> zu Punkt 3: meta description wird mit indiziert
>> Dazu hast du ja schon die Hack-Lösung
>> Ich hoffe auch, dass es mal konfigurierbar wird.
> 
> Ja, und am Besten auch die Ändrungsvorschläge zu Punkt 1
> 
>> zu Punkt 4: mehrfachindizierung bei tt_news
>>
>> Das löse ich bei mir auch so, wie du es beschreibst.
> 
> Gut - dann stimmt hier wohl schon mal die Richtung.
> 
>> Bei den zeitgesteuerten Einträgen hilft schätzungsweise nur eine 
>> re-Indexierung - am besten täglich per cronjob mit der crawler Ext, 
>> die leider etwas schwierig zu verstehen und konfigurieren ist.
> 
> Geht eine täglich Re-Indizierung nicht ziemlich auf en Traffic bzw. 
> Serverperformance? Ganz davon abgesehen, dass ich von cronjob's auch 
> nicht viel weiss... Wie sähe denn so ein cronjob aus?
> 
> 
> Was ich nur nicht ganz verstehe, da diese Thematik ja nicht so häufig im 
> Forum vorkommt: Es gibt doch mittlerweile einige sehr umfangreiche 
> TYPO3-Seiten mit wahrscheinlich tausenden von tt_news-Einträgen, die ja 
> i. d. R. eine Stopp-Datum haben. Wie machen's die denn dass sie saubere 
> Suchergebnisse bekommen?
> Ist eigentlich die indexed_search hier der Weisheit letzter Schluß oder 
> gibts Alternativen?
> 
> Viele Grüße
> 
> Michael
> 


More information about the TYPO3-german mailing list