Zum Inhalt springen

Index für Indexsuche erstellen

Erstellt am 22. Januar 2003 · 98 Antworten · letzte Antwort am 27. August 2004 · Seite 1 von 5

Tags: Suche, Frage, TYPO3 3

Saronimus ·

Hi,
wie kann ich Typo3 (3.5b5) dazu bringen für die Indexsuche einen Index zu erstellen. Das Plugin ist eingebunden, wie auch ein Seitenelement mit Typ->"Plugin einfügen" und Erweiterung->"Indexsuche".

Im Setup des Maintemplates (das auch für den Rest der Seiten gilt) sind die Einträge

config.index_enable = 1
config.index_externals = 1

vorhanden. Sämtliche Seiten sind "cacheable". Ich bin ratlos. 🙁
Es wäre nett, wenn mir jemand dieses Rätsel lösen könnte.

Danke und Ciao 🙂
Saronimus

lenzmark ·

Tja, Typo3 macht keine automatische Indexierung -> man muß die Seiten alle zuerst besuchen um den Index zu generieren.

SolarUwe ·

Ich glaube, lenzmark hat hier recht: Die Indexierung funktioniert nur bei gecachten Seiten - daher fragen ja auch immer wieder Leute nach, die sich wundern, dass News nicht von der Indexierung erfasst werden. Gecacht werden die Seiten aber erst, sobald mal einer die Seite aufgerufen hat.

Insofern denke ich schon: Erst wenn alle Seiten einmal (von irgendjemand) besucht wurden, sind sie auch alle im Index.

Gruß UWE.

Saronimus ·

Erst einmal Danke für die Antworten! 😃

Der Tipp die Seiten anzuschauen um sie in den Cache zu bekommen klappt leider nicht so wirklich.
Ich hatte schon einen ähnlichen gedanken und bin langsam beim überlegen, ob Typo3 nur dann eine Seite vollständig cached, wenn man die Graphiktools (z.B. GMENU) nutzt.

Da meine Seite nun fast vollständig die Möglichkeiten von CSS für das Design nutzt, und ich schlicht eh bevorzuge, nutze ich die Graphiktools auch nicht.

Auf jeden Fall sagt mir Typo3 zum Cache folgendes (nach ziemlichem herumsurfen)

z.B.
Status: cache_pages:0, cache_pagesection:11, cache_hash:88

Im Index ist auch keine Seite eingetragen und alle Seiten stehen zum Cachen zur Verfügung. Ein Rätsel... 🙁

Ciao
Saronimus

Roland-KS ·

Also nochmal meine Meinung: Alle Seite besuchen ist echter Blödsinn ! Sowas würder Kaspar NIE programmieren. Das funktioniert bei 100 ten von Seiten doch gar nicht...... Die Seiten müssen geCached werden - aber anders !

Habt ihr das schon gelesen:
EXT: Indexed Search Engine
http://typo3.org/doc+M59c0ffa2618.0.html ?

Zu den News und Produktkatalog kann ich sagen, dass die in den Index nur dann aufgenommen wird, wenn es statische Seiten sind.
steht hier:
1.5.3 How pages are indexed
http://typo3.org/doc+M52b465b2a23.0.html

So - und wenn man das alles durchgeackert hat, erfährt man:

templates setup:

config{
index_enable = 1 # typo3 pages
index_externals = 1 #PDF and WORD docs
}

Gruß Roland

Saronimus ·

Hi,
danke für die Antwort. 🙂
Aber leider hilft mir das nicht weiter. Ich hatte beide Texte schon durchgeackert, bevor ich hier gepostet habe und die Einträge für config.* stehen auch schon seit dem drin.

Deswegen bin ich ja so ratlos. Ich frage mich langsam, ob das Problem vieleicht irgendwie an der Installation liegen kann?
Da der Server (Linux) nur für Test- und Enwicklungszwecke dient und keinen Zugang zum Inet hat habe ich den nur schnell man hingepfutscht und ähnlich unsauber auch den Apache und PHP kompiliert.
Trotzdem sollte eigentlich alles sauber laufen, da ich schon darauf geachtet habe, was ich denn benötige.

Ciao
Saronimus

phil ·

Hi,
ich hatte das selbe Problem. Anleitungen durchgearbeitet, Forum durchsucht. Und dann mal folgendes ausprobiert - bitte sag doch Bescheid, ob es auch bei dir funktioniert:

a) Aus dem Frontend ausloggen
b) Dann als nicht eingeloggter User mal ein paar Seiten besuchen
c) Und siehe da...jetzt stehen diese Seiten im Cache und werden auch über die "indexed search" gefunden.

Offensichtlich werden Seiten nicht gecacht, wenn man als Editor eingeloggt ist. Macht irgendwo auch Sinn. Problem ist aber sicher, wenn man an den Seiten arbeitet und mit "clear all cache" die Suche wieder auf null setzt. Jetzt alle Seiten von Hand zu besuchen oder zu warten, bis alle Seiten einmal besucht wurden - beides nicht die optimalen Alternativen.

Ich werde mal ausprobieren einen externen Spider zu nutzen - wie http://www.digvid.info/isearch/home.php - mit dem man nach jeder Cache-Leeren-Operation die Seiten wieder in den Cache zurückholt.

Schöne Grüße,
Philipp

Roland-KS ·

Seiten besuchen KANN nicht die Lösung sein. Typo3 hat hunderte von Seiten, + die gesamte Doku + alle Beiträge aus der Mailingliste, wer soll die alle besuchen - trotzdem geht die Volltextsuche ?

Kann jemand mal die Frage in die Mailingliste stellen - da muss es eine andere Lösung geben ?!

-Roland-

marcoow ·

Seiten besuchen IST die Lösung. Die Seiten müssen, damit Sie für die Index- Suche verfügbar sind, im Typo3- Cache liegen. Da kommen sie aber nur rein, wenn sie von Typo3 mindestens einmal genereiert worden sind, was nur passiert, wenn sie von einem Client angefordert werden, also besucht werden. Es ist übrigens in den meisten Fällen so, dass die Seiten nur gecacht werden, wenn man die Seiten ohne aktives Login (also ohne Stifte) besucht.

Roland-KS ·

NO :x :x

Indexed search Engine doesn't do anything !!!

http://typo3.org/1422+M5fbf39963de.0.html

< Zusammenfassung >

//INDEXED SEARCH ENABLERS
config.index_enable = 1 #de-/activates indexing in general
config.index_externals = 1 #de-/activates indexing of doc, pdf, etc.

The code must be placed in your template, around the content element...I
used a wrap about mine...

page.10 < styles.content.get
page.10.wrap= <!--TYPO3SEARCH_begin-->|<!--TYPO3SEARCH_end-->

-Roland-

Saronimus ·

Was lange wärt wird endlich gut. Zumindest weiß ich nun wo das
Problem liegt. 😉

Seiten die Newselemente enthalten werden nicht gecached, was für
die Indexed Search zwingend erforderlich ist. Da ich nun auf jeder
Seite einen Bereich mit den aktuellen News hatte, wurde aber keine
Seite in den Cache mit aufgenommen.
Schaltet man das aus, werden alle Seiten ohne Newselemete, die besucht
werden, gecachet und somit auch in den Index geschrieben.

Vieleicht hilft das ja jemanden, der dieses Problem auch hat.

Ciao
Saronimus

P.S.: Man muss sich nicht als Admin auslogen, damit das Caching läuft.

jewo ·

Hi,

ich hab auch die Problem mit der indexed search und dem tt_news plugin.

Ich habe einfach das News-Modul aus dem Setup rausgenommen, dann den Index gebildet (Seiten besuchen) und dann die News wieder ins Setup aufgenomen.

Das funktioniert soweit wunderbar, die News werden zwar immer noch nicht durchsucht das ist aber halb so schlimm.

Hat jemand vielleicht eine Idee wie man den Vorgang automatisieren könnte?
Wäre für nen Tip dankabr, da ich erst vor drei Wochen eingestiegen bin.

Gruß,
Jewo

TW ·

also ne wirkliche lösung ist das nicht, aber eine alternative.....

einfach nen htdig über das root verzeichnis drüber laufen lassen. und dann das ganze in typo3 ausgeben lassen.......

funktioniert wunderbar!!!!!
wie gesagt, das ist nur ne alternative!

tmallee ·

Es gibt eine neue Extension, allerdings noch im Alpha Stadium, die alle Seiten cacht. Da die Ext. mit wget arbeitet, müssten eigentlich auch die nötigen Indizes für die Suche angelegt werden. Das löst allerdings nicht das News Problem, dafür muss tief im System geprogt werden.

Gruss

Thomas

wikki ·

selbst wenn die seiten gecached werden, was wird wirklich auf der seite gefunden? richtet es sich nur nach der überschrift, den metas und der beschreibung? oder findet er auch text, der auf der seite versteckt ist?
in der statistik variieren nämlich die anzahl der wörter zwischen 1 und 200 pro seite.

escapedPrisoner ·

Leide muss eine Seite wirklich im index existieren, damit die Texte dann wirklich gefunden werden. Die Extension "cache_all" ist also eine gute Idee.

Leider gibt es noch ein paar Probs, damit man sie optimal verwenden kann. Es dürften nicht alle Seiten auf einmal durchlaufen werden, und statt localhost müsste der wirklich hostname verwendet werden. o.O

Hiermit werden ein paar der Probs gelöst **UPDATE vom 11.12.03**:

/***** replace the lines 343 bis 367 with the following code: *******/

	                case 2: //Cache the pages
				//turn flush on
				ob_implicit_flush(1);
				
				/**************************
				*               settings               */

				//how much pages to cache NOW [value to test is 5] ?
				$howmuch = 50;

				// is curl installed [0 or 1]? - would be cool to check it by shell_exec()
				$use_curl = 1;

				// which languages [ if just one language: set both variables to "0" ] ?
				// [ if three languages: $langFrom = 0; $langTo = 2; ]
				$langFrom = 0; $langTo = 1;

				/*
				**************************/

				// set up the queries
				$query_main = "FROM pages LEFT JOIN cache_pages ON pages.uid=cache_pages.page_id WHERE pages.deleted=0 and pages.hidden=0 and pages.no_cache=0 and pages.doktype>0 and pages.doktype<3 and pages.fe_group=0 and cache_pages.page_id IS NULL";
				$query_count = "SELECT count(*) as countpages ".$query_main;
				$query_uid = "SELECT pages.uid ".$query_main." LIMIT 0 , ".$howmuch;

				//count the needed pages
				$res = mysql(TYPO3_db,$query_count);
				$row = mysql_fetch_assoc($res);

				//basic  info
				print "<br><br><h3>Caching. Please wait some seconds.</h3>";
				print "The settings are: max $howmuch pages by each run, ";
				if ($use_curl) { print "using curl, building cache for ".($langTo-$langFrom+1)." languages, <br>";
				} else { print "using wget, building cache just for default-language, <br>"; }
				$site="http://".$_SERVER["HTTP_HOST"]."/";
				print "Your site is: <b>".$site."</b><br> <br>";

				//get a list of pages with uid
				$res_uid = mysql(TYPO3_db,$query_uid);
				print '<br><br><font color="gray">The database-query is: '.$query_uid.' </font><br> <br>';
				//wget each page from the array
				while ($row = mysql_fetch_assoc($res_uid)) {
					$id = $row["uid"];

					if ($use_curl)  {
					    for ($i = $langFrom; $i <= $langTo; $i++) {
					      $curl = 'curl -o tempCURL_L'.$i.'.html -d "id='.$row[uid]  .'&L='.$i.'"'        .' '.$site.'index.php';
					      print $curl."<br>";
					      $out.= shell_exec($curl);
					    } // end language
					} else {
					    $wget = "wget ".$site."index.php?id=".$row["uid"]." --spider --timeout=0 --wait=0";
					    print $wget."<br>";
					    $out.= shell_exec($wget);
					} // end caching


                                }

				//count the needed pages
				$res = mysql(TYPO3_db,$query_count);
				$row = mysql_fetch_assoc($res);
				$countpages = $row["countpages"];

				//count the indexed_words !!!!!!!!
				$res = mysql(TYPO3_db,"SELECT count(*) as countwords FROM index_words");
				$row = mysql_fetch_assoc($res);
				$countwords = $row["countwords"];
				if ($countwords > 1) $txt_words="(it works !)";


				//basic  info
				print "<br><br><h3>$countwords words are in the index for <b>indexed_search $txt_words</b> ++ $countpages pages are NOT cached yet.</h3>You've got to run this tool several times.<br>";
                               $this->content.=$this->doc->section($LANG->getLL("caching").":",$content,0,1);
                        break;

Diesen Code habe ich schon mehrmals überarbeitet. Ist inzwischen schon sehr ausgefeilt ! 😉

Greetzz
Daniel

escapedPrisoner ·

Hab das nun umgestellt. Läuft nun nicht mehr mit wget, sondern mit curl.

Hat den Vorteil, dass nun für alle Sprachen gecached wird. Hat da jemand Interesse dran?

Greeetzz
Daniel

sw-student ·

Hi escapedPrisoner,

ich glaube es wäre im Interesse aller, wenn du den dafür nötigen Code hier posten könntest, bzw. vielleicht sogar direkt die Extensions ins Repository uploadest.

In welcher Datei muss ich obigen Code einfügen?

Gruß Sw-Student