Eigene SQL-Sortierung in Product Repository

Wenn die Liste nicht besonders groß ist, kannst die die auch loopen und einzelnd nacheinander suchen, dann wären sie wie die Ausgangsliste sortiert.

Außerdem ist EntitySearchResult.elements doch ein Array was man sortieren kann?

Oder du kannst das ScoreQuery benutzen um den Ergebnissen einen Score zu geben. Aber da weiß ich nicht ob das gut performt oder wie genau das ist. In diesem Beispiel hat es funktioniert:


        $hardCodesProductNumbers = ['511090138','511280129','511480038'];
        $criteria = (new Criteria())
            ->addFilter(new EqualsFilter('active', '1'))
            ->addFilter(new EqualsAnyFilter('productNumber', $hardCodesProductNumbers));

        $criteria->addQuery(
            new ScoreQuery(new ContainsFilter('productNumber', '511480038'), 3000)
        );
        $criteria->addQuery(
            new ScoreQuery(new ContainsFilter('productNumber', '511280129'), 2000)
        );
        $criteria->addQuery(
            new ScoreQuery(new ContainsFilter('productNumber', '511090138'), 1000)
        );

        $products = $this->productRepository->search($criteria, $context);