Benutzer-Werkzeuge

Webseiten-Werkzeuge


webservice:item-get-index

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
webservice:item-get-index [19.09.2013 ]
172.16.1.171 [Inhalt]
webservice:item-get-index [13.11.2014 ] (aktuell)
Zeile 1: Zeile 1:
 +====== Der NoSQL-Index ======
  
 +Die Index für die Methoden des Bereichs ''​item/''​ ist ein NoSQL-Index. Intern wird dafür [[http://​lucene.apache.org/​core|Apache Lucene]] verwendet. Der Index wird mittels des [[webservice:​item-get-maintainer|Index Maintainers]] regelmäßig aktualisiert.
 +
 +===== Inhalt =====
 +
 +Der Index enthält die mittels [[dstoreterm>​ApplicationID|ApplicationSettings]] (unter: ''​GeneralSettings/​Mappings/​NodeCharacteristics''​) konfigurierten Felder. Dabei werden ​ [[dstoreterm>​NodeCharacteristicID|NodeCharacteristicIDs]] einem eindeutigen Feldnamen zugeordnet. Verwendet man eine kommagetrennte Liste von IDs so werden die entsprechenden Eigenschaften alle in das entsprechende Feld übernommen((Es wird dabei immer der Keyword-Analyzer verwendet.)).
 +
 +Neben diesen Felder können folgende weitere Felder die immer automatisch gepflegt werden als Suchkriterien verwendet werden:
 +
 +^Feldname ^Beschreibung ^
 +|Active|Ist der Artikel oder die Variante aktiv (dStore-Status)?​|
 +|LastUpdated|Wann wurde der Artikel oder die Variant das letzte mal aktualisiert,​ d.h. mindestens ein Feld geändert?|
 +|LevelID|Die ID der Hierarchieebene im Artikelbaum des dStore.|
 +|ItemTreeNodeID|Referenziert die TreeNodeID zur Variante. Handelt es sich um einen Artikel ist die ItemTreeNodeID gleich der TreeNodeID.|
 +|NodeCharacteristicValueID|Bei 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"​.|
 +|NodeDescription|Die Beschreibung des Elementes im Artikelbaum des dStore.|
 +|PredecessorNodeDescriptions|Liste 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).|
 +|PredecessorTreeNodeIDs|Liste 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).|
 +|SplittedByCharacteristicID|Nach welchem Merkmal (ID) wurde bei Nutzung der SplitByCharacteristic-Funktionalität aufgeteilt?​|
 +|SortNo|Die Reihenfolge der Artikelelemente im Artikelbaum unterhalb des Vorgängerknotens.|
 +|TreeNodeID|TreeNodeID des Artikels bzw. der Variante. Hinweis: Sofern die SplitByCharacteristic-Funktionalität verwendet wird kann die gleiche TreeNodeID zu mehreren Artikel-Dokumenten hinterlegt sein.|
 +|VariantTreeNodeIDs|Referenziert 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 [[webservice:​item-get-maintainer|Index Maintainer]]) für jedes Artikelelement versucht den Verkaufspreis per [[dstoreproc>​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 [[webservice:​item-get-maintainer|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.