Sitegeist/taxonomy - is array in array Abfrage/Filter

Hallo,

ich möchte gerne Properties von einem Dokumententyp Rezension in die aktuelle Seite vom Dokumententyp Page einfügen. Die Verbindung/Verknüpfung der beiden Dokumentenkonten möchte ich per sitegeist/taxonomy herstellen.
Folgenden Code habe ich bereits erstellt:

    # Property Array [taxonomyReferences] der aktuellen Page auslesen
     taxonomyRef = Neos.Fusion:Loop {
    	items = ${q(node).property('taxonomyReferences')}
    	itemRenderer = Neos.Fusion:Loop { # Jetzt in den Dokumentenknoten Rezension nach gleichen Werten im Array [taxonomyReferences] suchen
        items = ${q(site).find('[instanceof Site.Vendor:Document.Rezension]')
.filter(Enhaelt das Array [taxonomyReferences] einen Wert aus dem Array [taxonomyReferences] dieser Page?).get()}
        
            itemName = 'item'
            itemRenderer = ${q(node).property('title')}
            }
        }

Wie muss der Filter formuliert werden?
Weil es eine Suche von Array in Array ist, finde ich keine Lösung.
Es soll reichen, wenn jeweils ein Wert von der Page im Array von Rezension gefunden wird.
Es müssen also die Array’s nicht identisch sein. Es soll lediglich ein Wert übereinstimmen.

Sicher hat der Eine oder Andere auch das die Taxonomy Erweiterung in Verwendung und hat für diese Abfrage bereits eine Lösung.

Vielen Dank im voraus.

Es sollte möglich sein sowas mit Elasticsearch zu machen, dann kann mann einen query wie folgt aufbauen:

${Search.query(site).nodeType('Site.Vendor:Document.Rezension').limit(100).appendAtPath('query.filtered.query.bool.should', {'terms': {'taxonomyReferences':q(node).property('taxonomyReferences')}})}

For more advanced queries regarding taxonomies there is sitegeist/taxonomy-elasticsearch - Packagist … never made an official release as we use it only rarely. Use it as blueprint or inspiration.

Everything will become easier once the new CR will allow to follow references in the other direction.

If you have relatively few records you can also try to fetch all first. And use ${Array.filter(...) or Neos.Fusion:Map