imx.Search: der neue ad-hoc Index-Update-Service

Datum: 3. Dezember 2014
Autor*in: Marc Kurzmann


Bisher war es bei imx.Search so, dass Änderungen in den Contents aus den Produkten nur nach einer kompletten Neu-Indizierung im Index verfügbar waren – üblicherweise über Nacht. Was für einen reinen Volltext-Suchmaschineneinsatz von imx.Search vielleicht noch akzeptabel ist, wenn Suchbegriffe mit einem Tag Verspätung gefunden werden, so ist es bei der Verwendung als Filter-Suchmaschine, so wie es mittlerweile bei allen unseren neueren und größeren Portalen geschieht, eher lästig, dass die Daten nicht gleich auffindbar sind, weil insbesondere auch keine saubere Portal-Prüfung direkt nach Eingabe möglich wird.

imx.Search unterstützt ab Version 3.6.0 (17.11.2014) den neuen ad-hoc Index-Update-Service. Die Funktionsweise ist wie folgt:

  • Änderungen aus den Produkten wird imxSearch über einen Service-Aufruf mitgeteilt: http://[imxsearch]/[lang]/imxsearch?method=scheduledUpdate&connectorId=…&objectId=…&lang=…
    Der Parameter lang ist optional; falls er weggelassen wird, wird auf die unterstützten Sprachen des [lang]-cores zurückgegriffen. Der connectorId ist imx.Search-Instanz individuell, typsicherweise z.B. imxtools2, imxcms etc.
  • imx.Search fügt diese Änderungsinformation in seine Update-Queue ein.
  • Alle 3 Minuten wird ein Schedule-Job in imx.Search gestartet, der die nächsten 100 Änderungs-Einträge aus der Queue entnimmt, die geänderten Objekte aus den entsprechenden Content-Quellen (Produkten) erneut abfragt und in den Index zurückschreibt. Ein Änderungs-Eintrag muss mindestens 30 Sekunden alt sein, damit er für den Schedule-Job berücksichtigt wird.
  • Die Queue erfasst max. 5000 Einträge. Alle Änderungsmitteilungen, während einer vollen Queue werden ignoriert. Das soll verhindern, dass bei riesigen Massenupdates der ad-hoc Index-Update für viele Stunden blockiert ist. Bei riesigen Imports ist es sinnvoll, den Ad-hoc-Update-Service zu blockieren und danach die Blockade wieder aufzuheben. Dazu gibt es den Service
    http://[imxsearch]/[lang]/imxsearch?method=scheduler&run=[true/false]
    Idealerweise finden solche Massenimports vor einem frischen Komplett-Index-Lauf statt.

Warum der Scheduler?

Der Scheduler sorgt dafür, dass sich durch Massenänderungen nicht plötzlich das ganze System aufschaukelt und dann unter der Last zusammenbricht. Bei Massen-Änderungen wie es sie z.B. bei Imports gibt, füllt sich zwar schnell die Queue, diese wird dann aber peau-a-peau in sog. „Chunks“ (100er-Einheiten) abgearbeitet, was die Spitzenlast deutlich reduziert. Dadurch, dass bei Massen-Änderungen die Queue schnell über die Chunk-Größe steigen kann, kann es passieren, dass in solchen Fällen ein Update im Index erst zu einem späteren Zeitpunkt und nicht schon beim nächsten Schedule-Job-Lauf durchgeführt wird.

Zur Aktivierung des neuen Ad-hoc-Index-Update-Services sind zwei Dinge zu tun
1. Update auf die neue imx.Search-Version >= 3.6.0
2. Aktivierung über die Konfiguration in den Produkten (imx.Tools, imx.EventManager, imx.CMS)

Hier läuft der neue Ad-hoc-Index-Update-Service bereits:

  • NÖW
  • byTM (Anbindung imx.Tools)
  • weitere Projekte werden nach und nach folgen [wenn es hier Wünsche zur Priorisierung gibt, dann teilt es mir bitte mit].

Dieser Artikel wurde verschlagwortet unter:


Kommentare

Selber kommentieren:






Weitere Beiträge zum Thema Technologie


Datenimporte in die imx.Platform

Autor*in: Tobias Pfannkuche


Technologie


Aufgrund der kontinuierlich steigenden Anzahl externer Datenlieferanten bzw. der Anbindung von Schnittstellen im Rahmen von Datenimporten und damit verbundenen wiederkehrenden Fragen, hier eine Zusammenfassung der Kern-Anforderungen, um Daten von Drittanbietern in die imx.Platform zu übernehmen, sowie Grundfunktionalitäten für Datenimporte. Anforderungen Grundsätzlich sind folgende technischen Anforderungen einer Schnittstelle, die wir zwecks Datenübernahme/-import nutzen wollen, zu erfüllen: …


Beitrag lesen
10
NOV
17

OOP 2015 – Tag 3

Autor*in: Marc Kurzmann


Technologie // Über den Tellerrand


Heute ging’s gleich technisch los mit dem ersten Vortrag über Möglichkeiten zur Vereinfachung von Deployments und Abhängigkeiten zur Laufzeitumgebung. Goßes Problem stellt hier zum Einen die oftmals mühsame Bereitstellung der Laufzeitumgebung dar (insbes. Appserver, wie Tomcat etc.), zum Anderen bringt das eine große Abhängigkeit in den zu verwendenden Bibliotheken mit sich (Servlet-API). Einen interessanten Ansatz …


Beitrag lesen
30
JAN
15

bLazy.js

Autor*in: Benjamin Hofmann


Technologie   //   User Experience & Design


Und schon wieder eine kleine Standalone-Vanilla-JS-Library, die ich am Wochenende entdeckt habe: bLazy.js (GitHub, Demo) In dem ca. 1,5 KB Skript befindet sich die komplette Logik, um Bilder erst dann zu laden wenn sie im Viewport angezeigt werden. Und nicht nur Bilder, sondern auch I-Frames und andere Embeds können dynamisch nachgeladen werden. Und es funktioniert …


Beitrag lesen
26
SEP
16

XML in JSON oder Arrays umwandeln in PHP

Autor*in: Stefan Oswald


Technologie


Ich bin heute über die mir bisher in diesem Ausmaß noch gar nicht bekannte Mächtigkeit der JSON-Funktionen von PHP gestolpert: Wie sich bei einer imx.Mapwork Anpassung herausgestellt hat, kann json_encode() so ziemlich alles als Parameter erhalten – einschließlich SimpleXMLElement. Der einzige Typ, der nicht verarbeitet werden kann, ist „resource“. Auf diese Art ist es sehr …


Beitrag lesen
08
APR
14