Hallo zusammen,
ich bin am verzweifeln wegen der Shopware Suche bzw Enterprise Seach bzw Elastic Search.
Im Netz finde ich nichts passendes. Die Doku hilft einem auch nicht so wirklich weiter.
Info
Shopware 5.6.2
Enterprise Search 2.2.8
Ich habe den Elastic Search Index bereits erfolgreich befüllen können. Ich habe dazu ein neues Plugin geschrieben, dass quasi fast das selbe macht wie die Dateien unter custom/plugins/SwagEnterpriseSearch/Bundle/ESIndexingBundle/Category/
Also DataIndexer, Mapping, Provider, Struct, SuggestionBuilder erstellt und den Elastic Search Index mit Daten aus einer externen DB befüllt.
Diese Daten haben genau denselben Aufbau wie die ganzen anderen Elastic Indexes:
Ich möchte folgendes:
Suchergebnis erweitern mit einem weiteren Wert aus einer externen DB (indexiert in ES)
Das hat auch gut funktioniert wenn ich testweise in der SwagEnterpriseSearch in allen Suggestion* Dateien analog zur suggestion_emotion noch eine weitere Suggestion (suggestion_lexicon) hinzugefügt habe. Er zeigte mir dann in den Suchergebnissen die gefundenen Ergebnisse erfolgreich an.
Meine Idee war folgende:
SwagEnterpriseSearch erweitern mit diesem bereits geschriebenen Plugin.
Dazu habe ich einfach jedes File, dass in der SwagEnterpriseSearch eine Suggestion (zB Emotion oder Category) beinhaltet oder damit zu tun hatte in mein Plugin übernommen und „überarbeitet“.
Also folgende Dateien:
- frontend/search/search_results.tpl
- /Bundle/SearchBundle/CriteriaRequestHandler.php
- /Bundle/SearchBundle/ExtendSuggestionFacet.php
- /Bundle/SearchBundle/ExtendSuggestionFacetResult.php
- /Bundle/SearchBundleES/ExtendSuggestionHandler.php
- /Bundle/SearchBundleES/SearchTermQueryBuilder.php
- /Bundle/EnterpriseSearchBundle/SearchConfig/ExtendSuggestionConfig.php
- /Bundle/EnterpriseSearchBundle/SearchConfig/ExtendConfigCollection.php
- /Bundle/EnterpriseSearchBundle/SearchConfig/ExtendReader.php
- /Bundle/EnterpriseSearchBundle/SearchConfig/ExtendReaderInterface.php
Sobald ich jedoch in der /Bundle/SearchBundle/CriteriaRequestHandler.php (folgenden Code aufrufe:
PS: Es ist genau der gleiche Code wie in custom/plugins/SwagEnterpriseSearch/Bundle/SearchBundle/CriteriaRequestHandler.php
→ nur dass ich aus addFacet( new SuggestionFacet (…) ); → addFacet (new ExtendSuggestionFacet (…)); gemacht habe. Also Zusammengefasst so:
class CriteriaRequestHandler implements CriteriaRequestHandlerInterface
{
/**
* @var ReaderInterface
*/
private $reader;
/**
* @var FacetFilterInterface
*/
private $facetFilter;
/**
* @var RepositoryInterface
*/
private $repository;
public function __construct(
ExtendReaderInterface $reader,
FacetFilterInterface $facetFilter,
RepositoryInterface $repository
) {
$this->reader = $reader;
$this->facetFilter = $facetFilter;
$this->repository = $repository;
}
/**
* @param Request $request
* @param Criteria $criteria
* @param ShopContextInterface $context
*/
public function handleRequest(
Request $request,
Criteria $criteria,
ShopContextInterface $context
) {
$config = $this->reader->read();
$searchPageConfig = $config->getSearchPageConfig($context->getShop()->getId());
$criteria->addFacet(
new ExtendSuggestionFacet(
$request->get('sSearch'),
$searchPageConfig
)
);
erhalte ich folgenden Fehler aber ich weis nicht wieso.
Fatal error : Uncaught RuntimeException: \Bundle\SearchBundle\ExtendSuggestionFacet class not supported in /var/www/html/shop/custom/plugins/SwagEnterpriseSearch/Bundle/SearchBundleES/ProductNumberSearch.php:201 Stack trace: #0 /var/www/html/shop/custom/plugins/SwagEnterpriseSearch/Bundle/SearchBundleES/ProductNumberSearch.php(180): SwagEnterpriseSearch\Bundle\SearchBundleES\ProductNumberSearch->getHandler(Object(\Bundle\SearchBundle\ExtendSuggestionFacet)) #1 /var/www/html/shop/custom/plugins/SwagEnterpriseSearch/Bundle/SearchBundleES/ProductNumberSearch.php(152): SwagEnterpriseSearch\Bundle\SearchBundleES\ProductNumberSearch->addCriteriaParts(Object(Shopware\Bundle\SearchBundle\Criteria), Object(Shopware\Bundle\StoreFrontBundle\Struct\ShopContext), Object(SwagEnterpriseSearch\ElasticsearchDsl\Msearch), Array) #2 /var/www/html/shop/custom/plugins/SwagEnterpriseSearch/Bundle/SearchBundleES/ProductNumberSearch.php(78): SwagEnterpriseSearch\Bundle\SearchBundleES\ProductNumberSearch->buildS in /var/www/html/shop/custom/plugins/SwagEnterpriseSearch/Bundle/SearchBundleES/ProductNumberSearch.php on line 201
Habt Ihr Ideen wieso dieser Fehler kommt? Ist das nicht erlaubt?
Habt ihr andere evtl einfachere Vorschläge wie ich die Suggestions um eine weitere erweitern könnte?