Benutzer-Werkzeuge

Webseiten-Werkzeuge


webservice:item-get-index

Der NoSQL-Index

Die Index für die Methoden des Bereichs item/ ist ein NoSQL-Index. Intern wird dafür Apache Lucene verwendet. Der Index wird mittels des Index Maintainers regelmäßig aktualisiert.

Inhalt

Der Index enthält die mittels ApplicationSettings (unter: GeneralSettings/Mappings/NodeCharacteristics) konfigurierten Felder. Dabei werden NodeCharacteristicIDs einem eindeutigen Feldnamen zugeordnet. Verwendet man eine kommagetrennte Liste von IDs so werden die entsprechenden Eigenschaften alle in das entsprechende Feld übernommen1).

Neben diesen Felder können folgende weitere Felder die immer automatisch gepflegt werden als Suchkriterien verwendet werden:

Feldname Beschreibung
ActiveIst der Artikel oder die Variante aktiv (dStore-Status)?
LastUpdatedWann wurde der Artikel oder die Variant das letzte mal aktualisiert, d.h. mindestens ein Feld geändert?
LevelIDDie ID der Hierarchieebene im Artikelbaum des dStore.
ItemTreeNodeIDReferenziert die TreeNodeID zur Variante. Handelt es sich um einen Artikel ist die ItemTreeNodeID gleich der TreeNodeID.
NodeCharacteristicValueIDBei Verwendung der SplitByCharacteristic-Funktionalität wird zum Artikel hinterlegt, welche Eigenschaft die aufgespaltenen Varianten gemeinsam haben. Enthält bei einer Aufteilung der Varianten nach Farbe z.B. die ValueID für „grün“.
NodeDescriptionDie Beschreibung des Elementes im Artikelbaum des dStore.
PredecessorNodeDescriptionsListe von Beschreibungen der Vorgängerelemente in Reihenfolge vom Root-Knoten des Artikelbaums bis zum Vorgänger des Produktes (bei Artikeln) bzw. zum Artikel (bei Varianten).
PredecessorTreeNodeIDsListe der TreeNodeIDs der Vorgängerelemente in Reihenfolge vom Root-Knoten des Artikelbaums bis zum Vorgänger des Produktes (bei Artikeln) bzw. zum Artikel (bei Varianten).
SplittedByCharacteristicIDNach welchem Merkmal (ID) wurde bei Nutzung der SplitByCharacteristic-Funktionalität aufgeteilt?
SortNoDie Reihenfolge der Artikelelemente im Artikelbaum unterhalb des Vorgängerknotens.
TreeNodeIDTreeNodeID des Artikels bzw. der Variante. Hinweis: Sofern die SplitByCharacteristic-Funktionalität verwendet wird kann die gleiche TreeNodeID zu mehreren Artikel-Dokumenten hinterlegt sein.
VariantTreeNodeIDsReferenziert die TreeNodeIDs (eine Liste) der Varianten zum Artikel. Wird die SplitByCharacteristic-Funktionalität verwendet, sind nur die Varianten enthalten, die nach einer Aufspaltung nach Merkmal logisch zum Artikel gehören.

Preisinformationen

Seit der Version 1.22 des webservice_SmartGates wird standardmäßig (abschaltbar per disablePriceFields beim Index Maintainer) für jedes Artikelelement versucht den Verkaufspreis per om_GetPrices_Ad zu ermitteln (ohne weitere Preis-beeinflussende Faktoren wie Person, Versandart o.ä.). Ist dies erfolgreich werden folgende Felder (identisch mit den Rückgabespalten der Prozedur) hinterlegt:

  • UnitGrossPrice
  • UnitNetPrice
  • RelativeSurcharge
  • AbsolutUnitGrossSurcharge
  • AbsolutUnitNetSurcharge

Binaries

Neben Merkmalen sind auch die BinaryCodeIDs für die konfigurierten Bildtypen im Index vorhanden. Die entsprechenden Felder heissen BinaryCodeID_<Bildtyp aus Mapping> und werden konfiguriert unter GeneralSettings/Mappings/Binaries/NodeCharacteristicValues (Key=ID des BinaryTyp, Value=Bezeichnung des BinaryTyp).

Vorbereitung für Filterung

Neben der Eigenschaft selber werden einzelne Bestandteile („Tokens“) zur Optimierung der Suche in den NoSQL-Index übernommen. Zur Zeit werden drei Analyser für die Trennung in Tokens unterstützt:

  • Standard-Analyser: Trennt die Eigenschaften an „Wortgrenzen“ auf und macht sie case-insensitiv.
  • Pattern-Analyser: Trennt die Eigenschaft an regulären Ausdrücken (das umfasst u.a. auch einfache Trennzeichen)
  • Keyword-Analyser: Nimmt die gesamte Eigenschaft ohne Veränderung als Token auf.

Für alle Felder ausser für die Artikelnummer (NodeCharacteristicID 6) wird der Standard-Analyzer verwendet. Besonders für Felder die als Filter in einer Facetten-Navigation verwendet werden ist es in der Regel notwendig diese zusätzlich unverändert (sprich: Keyword-Analyser) zu speichern.

Mit der Einstellung KeywordAnalyzer unter OperationSettings/GetItems/Analyzers kann eingestellt werden für welche Merkmale ein zusätzliches Feld (Feld-Name: <Feldname>_KeywordAnalyzer) gepflegt wird. Verwendet man einen Filter wird transparent das entsprechende Feld gewählt.

:!: Änderungen an dieser Konfiguration werden erst nach Aufruf der Methode service/reload und einem „Full-Update“ des NoSQL-Index wirksam.

Vorbereitung für Sortierung

Um nach bestimmten Feldern im Index zu sortieren ist es erforderlich im Vorfeld festzulegen welche Felder für eine Sortierung generell in Frage kommen. Es handelt sich um eine Komma-getrennte Liste von Feldnamen und die Einstellung befindet sich unter OperationSettings/GetItems und heisst SortableFields.

In die Einstellung SortableFields müssen ab Version 1.21 nur noch folgende Felder eingetragen werden:

  • Felder mit Datentyp String (der Datentyp ergibt sich aus dem dStore-FieldType)
  • Felder in denen nach dStore-SortNo sortiert werden soll

:!: Änderungen an dieser Konfiguration werden erst nach Aufruf der Methode service/reload und einem „Full-Update“ des NoSQL-Index wirksam.

Mehrfach-Werte

Im dStore werden mehrere Werte zu einem Merkmal nicht unterstützt. Man behilft sich dann in der Regel mit Komma-getrennten Werteliste (oft in den „Details“) in einem Merkmal oder mit mehreren Merkmalen (<Merkmal>_<1..n>).

Mit der Einstellung FieldSeparators unter OperationSettings/GetItems kann man nun festlegen mit welchem Trennzeichen ein bestimmtes Feld in einzelne Werte aufgetrennt werden soll. Es wird dann der o.g. Pattern-Analyser verwendet.

Will man die Werte mehrerer Merkmale „zusammenführen“, so ist es möglich in der Konfiguration der Index-Felder unter GeneralSettings/Mappings/NodeCharacteristics/Descriptions komma-getrennt mehrere Merkmal-IDs auf ein Index-Feld zu mappen. Es wird dann immer der Keyword-Analyser verwendet.

:!: Änderungen an dieser Konfiguration werden erst nach Aufruf der Methode service/reload und einem „Full-Update“ des NoSQL-Index wirksam.

SplitByCharacteristic-Funktionalität

Es gibt eine Funktionalität die je nach Aufbau des Artikelstamms aktiviert werden kann und die dazu führt, dass die Struktur des Index nicht exakt der Abbildung der Artikel- und Varianten in der Datenbank entspricht. Die Aktivierung erfolgt durch einen Parameter beim Index Maintainer und kann nicht per Application-Settings konfiguriert werden.

Die SplitByCharacteristic-Funktionalität leistet folgendes: Es können Artikel, die in der Datenbank mit zwei Variantenmerkmalen (im folgenden mit dem Beispiel Farbe und Größe) angelegt sind, künstlich in einen Artikel je Farbe mit entsprechenden Größen als Varianten „umgewandelt“ werden. Hintergrund ist das die Daten aus Fremdsystemen (WWS) nicht immer der Präsentationslogik im Webshop entsprechen. Die verschiedenen Farb-Varianten sollen in (Artikel-)Listen immer nebeneinander stehen, die Paginierung basiert aber auf Artikel und nicht auf Variantenzählung.

:!: Änderungen an dieser Konfiguration werden erst nach Aufruf der Methode service/reload und einem „Full-Update“ des NoSQL-Index wirksam.

1)
Es wird dabei immer der Keyword-Analyzer verwendet.
webservice/item-get-index.txt · Zuletzt geändert: 13.11.2014 (Externe Bearbeitung)