Manipulation von Suggest- und Searchresults ohne Elasticsearch

Hallo Allerseits!

Ich versuche, in Shopware 6 die Reihenfolge von Produkten in der Search- und Suggest-Funktion anhand eines eigenen Datenbankfeldes zu steuern. Ziel ist, dass Produkte mit höherem Wert in diesem Feld weiter oben erscheinen.

Was ist bisher versucht habe, hat zu keinen Erfolg geführt. ich weiß aufgrund von der logs, dass mein Subscriber definitiv getriggert wird, aber irgendwas scheine ich zu übersehen insofern es überhaupt möglich ist.

  1. FieldSorting / Criteria Events (ProductSearchCriteriaEvent, ProductSuggestCriteriaEvent
  • Idee: FieldSorting auf custom_field setzen.

  • Problem: custom field ist kein offiziell registriertes Shopware-Feld .

  • Resultat: Criteria-Events ignorieren das Feld, Sortierung klappt nicht.

Direkter Query-Zugriff über Criteria (getQuery())

  • Versuch: Manuelles Hinzufügen von ORDER BY msx_custom_ranking über getQuery().

  • Problem: getQuery() existiert nicht auf ProductSearchCriteriaEvent oder ProductSuggestCriteriaEvent.

Event ProductSearchResultEvent / ProductSuggestResultEvent

  • Idee: Produkte nach dem Laden per Repository sortieren (getSortedIdsForProducts()) und dann die Elemente in $products->setElements() ersetzen.

  • Problem: Trotz korrektem Subscriber wurden die Produkte nicht korrekt sortiert angezeigt. Debugging-Logs zeigen zwar, dass Events gefeuert werden, aber die Liste bleibt unverändert

Repository

  • Idee: eine Kombination aus Repository und einem angeänderten Subscriber nutzen
  • Problem: das habe ich tatsächlich noch nicht finden können, abseits davon, dass es tricky ist beim kompletten umgehen der DAL eine saubere Suche zu schreiben

leider funktioniert das alles nicht, hat jemand noch eine Idee oder Tipps?

Danke im vorraus