[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