Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

Das befüllen von Dokumenten findet automatisiert statt. Um Dokumente effizient erstellen zu können, ist eine Konfigurationsdatei je Package notwendig. Sie ermöglicht die Linearisierung hierarchischer Strukturen und Konfiguration von Redis. Hier ein Beispiel für Artikelgruppen und Artikel.

Codeblock
languagejsjson
{
    "repositories": [
        {
            "repository": "shopGroup",
            "documents": [
                {
                    "type": "base",
                    "placeholder": [
                        {
                            "name": "label",
                            "pattern": "{{ output=$1 }} / {{ output=$3 }}",
                            "modifier": {
                                "WEIGHT": "0"
                            }
                        },
                        {
                            "name": "description",
                            "pattern": "{{ output=$2 }}<br />{{ output=$4 }}",
                            "modifier": {
                                "WEIGHT":
"0"
                            }
                        },
                        {
                            "name": "image",
                            "pattern": "{{ output=$5 }}",
                            "modifierisImage": {true
                                "WEIGHT": "0"
                            }
                        },
                        {
                            "name": "keywords",
                            "pattern": "{{ output=$3 }}",
                            "modifier": {
                                "WEIGHT": "1"
                            }
                        }
                    ],
                    "trigger": [
                        ["shopArticle", "shopGroup"],
                        ["shopGroup"]
                    ],
                    "node": {
                        "repository": "shopGroup",
                        "properties": [
                            {
                                "number": 1,
                                "name": "shopGroupName"
                            },
                            {
                                "number": 2,
                                "name": "shopGroupDescription"
                            }
                        ],
                        "nodes": [
                            {
                                "repository": "shopArticle",
                                "properties": [
                                    {
                                        "number": 3,
                                        "name": "shopArticleName"
                                    },
                                    {
                                        "number": 4,
                                        "name": "shopArticleDescription"
                                    },
                                    {
                                        "number": 5,
                                        "name": "shopArticleImage1"
                                    }
                                ]
                            }
                        ]
                    }
                }
            ]
        }
    ]
}

...

Codeblock
languagebash
'document-storage' => [
  'host' => getenv('DOCUMENT_STORAGE_HOST'),
  'port' => getenv('DOCUMENT_STORAGE_PORT'),
  'event-based' => false
]

Zusätzlich wird folgender Cronjob benötigt.

Codeblock
languagebashthemeRDark
-package=Doctrine/DocumentStore -host=domain.brandbox.de

Rollen und Rechte

Rollen und Rechte bleiben bei der Indexierung unberücksichtigt. Bei der Suche wird jedoch anhand der Rollen gefiltert. Der Parameter $noAcl kann dafür verwendet werden.

Codeblock
languagephp
use Brandbox\FrameworkDoctrineDocument\Doctrine\DocumentStore;
$query = 'Auto';
$collationId = 1;
$document = 'base'; // oder ''
$repository = 'shopGroup' // oder ''
$limit = 10;
$noAcl = false;$documents = $this
    ->staticController(DocumentStore\Manager::class)
    ->search($query, $collationId, $document, $repository, $limit, $noAcl)
;

Testing

Es steht ein Test zur Verfügung, den ausschließlich Administratoren ausführen können. Öffnen Sie dazu folgenden Request in Ihrem System:
/admin?request=Doctrine/DocumentStore.test&query=Auto