Nodes für Suche indizieren
Eingetragen von Medienopfer98 (65)
am 09.03.2010 - 12:11 Uhr in
am 09.03.2010 - 12:11 Uhr in
Ich habe mich vor kurzem dazu entschieden für zukünftige Projekte Drupal zu nutzen und bin deshalb noch nicht so fit in Drupal. Nun stehe ich vor meiner ersten Hürde. Inhalte werden ja über den Cronjob von Drupal indexiert. Allerdings hätte ich gerne, dass ein Node direkt beim erstellen bzw. ändern ebenfalls indexiert wird. Gibts dafür ein Modul bzw. schöner wäre evtl. für mich, die Funktion zu kennen bestimmte Nodes z.b. per id indexieren zu lassen. Problem ist nämlich, das ich sofort nach anlegen der Inhalte danach suchen muss.
- Anmelden oder Registrieren um Kommentare zu schreiben
Brainstorming: Kleines Modul
am 09.03.2010 - 12:23 Uhr
Brainstorming:
Kleines Modul schreiben, das hook_nodeapi() implementiert und bei den Aktionen "insert" und "update" hook_cron() aufruft.
http://api.drupal.org/api/function/hook_nodeapi/6
Suchmaschinenoptimierung (SEO) & Drupal
Mhhh, aber...
am 09.03.2010 - 13:41 Uhr
... würde man dann nicht wieder alle Nodes indexieren. Bzw. innerhalb von Sucheinstellungen kann man ja sagen, wieviele Objekte pro Cron indexiert werden sollen (das geht mom. nur bis 500). Ich will dass das ganze performant bleibt. Der Cron soll ganz normal alle drei Stunden wie jetzt durchlaufen und 500 Seiten (bzw. 200) indexieren. Nur er soll ebenfalls beim abspeichern des aktuell bearbeiteten Nodes, diesen auch gleich indexieren. hook_nodeapi() klingt gut. aber hook_cron() macht wieder 500 auf einmal und da ist dann nicht sicher ob der node den ich grad bearbeitet habe, dann auch mit dabei ist. hab zwar nicht soviele seiten, will aber für meinen Test mal davon ausgehen, sonst taucht die Frage früher oder später wieder hier auf. Hoffe ich konnte mein Problem einigermassen schildern.
Ich suche nach einer funktion, die mir einen bestimmten Node den ich per ID angebe mit in den search_index aufnimmt.
Dann wird wohl nichts anderes
am 09.03.2010 - 13:46 Uhr
Dann wird wohl nichts anderes Bleiben, als das Search-Modul auseinanderzunehmen und diese Funktion zu suchen.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Nein. Hook_cron() lässt nicht
am 09.03.2010 - 13:52 Uhr
Nein. Hook_cron() lässt nicht bei jedem Aufruf alle Nodes komplett neu indexieren - das wäre Overkill. Es werden standardmäßig nur die Nodes neu indexiert, die neu sind, seit letztem Aufruf geändert wurden oder neue Kommentare haben. Siehe auch http://acquia.com/blog/drupal-search-how-indexing-works
Natürlich wird erstmal alles durchlaufen was hook_cron() implementiert und jede Implementierung entscheidet, ob sie gerade etwas zu tun hat und wieviel oder nicht. Wie lange das dauert hängt von den installierten Modulen, den daten, etc. ab - also vom Einzelfall. Hook_cron() kann man aber auch im Hintergrund laufen lassen, siehe Implementierung im Poorman's Cron Modul.
Suchmaschinenoptimierung (SEO) & Drupal
Oder einfach nur
am 09.03.2010 - 13:56 Uhr
Oder einfach nur hook_update_index() oder die Implementierung fürs Node-Modul, node_update_index() aufrufen, anstatt den kompletten hook_cron().
Suchmaschinenoptimierung (SEO) & Drupal
Zitat:Dann wird wohl nichts
am 09.03.2010 - 13:58 Uhr
Dann wird wohl nichts anderes Bleiben, als das Search-Modul auseinanderzunehmen und diese Funktion zu suchen.
Scheint so, als hätte das schonmal jemand gemacht:
http://acquia.com/blog/drupal-search-how-indexing-works
Das könnte bei dem Problem hilfreich sein.
Edit: verdammt, Alexander war schneller -.-
Tröste dich, im Wilden Westen
am 09.03.2010 - 14:00 Uhr
Tröste dich, im Wilden Westen ist meist der gestorben, der zuerst gezogen hat. ;-)
Suchmaschinenoptimierung (SEO) & Drupal