optimize retrieval
This commit is contained in:
@@ -12,27 +12,48 @@ final class CommerceIntentConfig
|
||||
'shop',
|
||||
'alle',
|
||||
'preis',
|
||||
'preise',
|
||||
'kunde',
|
||||
'online',
|
||||
'produkt',
|
||||
'produkte',
|
||||
'artikel',
|
||||
'sku',
|
||||
'kaufen',
|
||||
'kostet',
|
||||
'kosten',
|
||||
'verfügbarkeit',
|
||||
'verfuegbarkeit',
|
||||
|
||||
// Search / product discovery signals
|
||||
'suche',
|
||||
'such',
|
||||
'finde',
|
||||
'finden',
|
||||
'welche',
|
||||
'welcher',
|
||||
'welches',
|
||||
|
||||
// Product-type signals for technical/commercial requests
|
||||
// Device / system signals
|
||||
'analysegerät',
|
||||
'analysegeraet',
|
||||
'analysegeräte',
|
||||
'analysegeraete',
|
||||
'messgerät',
|
||||
'messgeraet',
|
||||
'messgeräte',
|
||||
'messgeraete',
|
||||
'gerät',
|
||||
'geraet',
|
||||
'geräte',
|
||||
'geraete',
|
||||
'analysator',
|
||||
'analysatoren',
|
||||
'analyzer',
|
||||
'system',
|
||||
'systeme',
|
||||
'anlage',
|
||||
'anlagen',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -46,6 +67,8 @@ final class CommerceIntentConfig
|
||||
'geeignet',
|
||||
'empfiehl',
|
||||
'empfehl',
|
||||
'vergleich',
|
||||
'vergleichen',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -57,6 +80,7 @@ final class CommerceIntentConfig
|
||||
'eur',
|
||||
'teuer',
|
||||
'preis',
|
||||
'preise',
|
||||
'kosten',
|
||||
'kostet',
|
||||
];
|
||||
|
||||
@@ -1,63 +1,94 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Config;
|
||||
|
||||
class CommerceQueryParserConfig
|
||||
final readonly class CommerceQueryParserConfig
|
||||
{
|
||||
public function getKnownBrands(): array
|
||||
{
|
||||
return [
|
||||
'heyl',
|
||||
'horiba',
|
||||
'neomeris'
|
||||
];
|
||||
/**
|
||||
* @param string[] $knownBrands
|
||||
* @param string[] $phrasesToRemove
|
||||
* @param string[] $filterSearchTokensPattern
|
||||
* @param string[] $referenceOnlyTokens
|
||||
*/
|
||||
public function __construct(
|
||||
private array $knownBrands = [],
|
||||
private array $phrasesToRemove = [],
|
||||
private array $filterSearchTokensPattern = [],
|
||||
private array $referenceOnlyTokens = [],
|
||||
) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string[]
|
||||
*/
|
||||
public function getKnownBrands(): array
|
||||
{
|
||||
return $this->knownBrands;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string[]
|
||||
*/
|
||||
public function getPhrasesToRemove(): array
|
||||
{
|
||||
return [
|
||||
'ich suche',
|
||||
'suche',
|
||||
'habt ihr',
|
||||
'gibt es',
|
||||
'zeige mir',
|
||||
'welches gerät',
|
||||
'welche gerät',
|
||||
'welches modell',
|
||||
'welches ist besser',
|
||||
'welches ist am besten',
|
||||
'alternative',
|
||||
'alternativen',
|
||||
];
|
||||
return $this->phrasesToRemove;
|
||||
}
|
||||
|
||||
public function getHistoryContextPattern(): string
|
||||
{
|
||||
return 'chat|auch|noch|nochmal|zusätzlich|dazu|davon|stattdessen|alternative|alternativen|größer|groesser|kleiner|gleich(?:e|en|er|es)?|derselbe|dieselbe|dasselbe|wie oben|wie zuvor|wie gehabt';
|
||||
return 'auch|noch|nochmal|dazu|wie oben|wie zuvor|ähnlich|aehnlich|stattdessen|alternative|alternativ|gerät|geraet|das gerät|das geraet|dieses gerät|dieses geraet|das modell|dieses modell|dafür|dafuer|davon|preis|preise|preis dazu|preis dafür|preis dafuer|preis zum gerät|preis zum geraet|was kostet das|was kostet das gerät|was kostet das geraet|und der preis|kosten|verfügbarkeit|verfuegbarkeit|link dazu|shop|bitte';
|
||||
}
|
||||
|
||||
public function getReferenceFollowUpPattern(): string
|
||||
{
|
||||
return 'preis|preise|preis dazu|preis dafür|preis dafuer|preis zum gerät|preis zum geraet|was kostet das|was kostet das gerät|was kostet das geraet|gerät|geraet|das gerät|das geraet|dieses gerät|dieses geraet|das modell|dieses modell|dafür|dafuer|davon|verfügbarkeit|verfuegbarkeit|link dazu|shop|bitte';
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string[]
|
||||
*/
|
||||
public function getFilterSearchTokensPattern(): array
|
||||
{
|
||||
return $this->filterSearchTokensPattern;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string[]
|
||||
*/
|
||||
public function getReferenceOnlyTokens(): array
|
||||
{
|
||||
if ($this->referenceOnlyTokens !== []) {
|
||||
return $this->referenceOnlyTokens;
|
||||
}
|
||||
|
||||
return [
|
||||
'auch',
|
||||
'noch',
|
||||
'nochmal',
|
||||
'zusätzlich',
|
||||
'preis',
|
||||
'preise',
|
||||
'kosten',
|
||||
'kostet',
|
||||
'gerät',
|
||||
'geraet',
|
||||
'modell',
|
||||
'produkt',
|
||||
'artikel',
|
||||
'dafür',
|
||||
'dafuer',
|
||||
'dazu',
|
||||
'davon',
|
||||
'stattdessen',
|
||||
'verfügbarkeit',
|
||||
'verfuegbarkeit',
|
||||
'shop',
|
||||
'link',
|
||||
'zum',
|
||||
'zur',
|
||||
'das',
|
||||
'dieses',
|
||||
'den',
|
||||
'dem',
|
||||
'bitte',
|
||||
'gern',
|
||||
'gerne',
|
||||
'zeige',
|
||||
'zeig',
|
||||
'such',
|
||||
'suche',
|
||||
'finde',
|
||||
'find',
|
||||
'mir',
|
||||
'mal',
|
||||
'von',
|
||||
'und',
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -1,46 +1,78 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Config;
|
||||
|
||||
class ShopServiceConfig
|
||||
final class ShopServiceConfig
|
||||
{
|
||||
public const DEVICE_QUERY_KEYWORDS = [
|
||||
'analysegerät',
|
||||
'analysegeraet',
|
||||
'analysegeräte',
|
||||
'analysegeraete',
|
||||
'messgerät',
|
||||
'messgeraet',
|
||||
'messgeräte',
|
||||
'messgeraete',
|
||||
'analysator',
|
||||
'analysatoren',
|
||||
'analyzer',
|
||||
'gerät',
|
||||
'geraet',
|
||||
'geräte',
|
||||
'geraete',
|
||||
'monitor',
|
||||
'monitore',
|
||||
'controller',
|
||||
'controller',
|
||||
'gerät für',
|
||||
'geraet fuer',
|
||||
'geräte für',
|
||||
'geraete fuer',
|
||||
'system',
|
||||
'systeme',
|
||||
'anlage',
|
||||
'anlagen',
|
||||
];
|
||||
|
||||
public const ACCESSORY_QUERY_KEYWORDS = [
|
||||
'zubehör',
|
||||
'zubehor',
|
||||
'reagenz',
|
||||
'reagenzien',
|
||||
'reagent',
|
||||
'indikator',
|
||||
'indikatoren',
|
||||
'indicator',
|
||||
'kit',
|
||||
'set',
|
||||
'ersatz',
|
||||
'ersatzteil',
|
||||
'ersatzteile',
|
||||
'verbrauchsmaterial',
|
||||
'consumable',
|
||||
'dazu',
|
||||
'passend',
|
||||
'passende',
|
||||
'passendes',
|
||||
'nachfüll',
|
||||
'nachfuell',
|
||||
'refill',
|
||||
'filter',
|
||||
'pumpenkopf',
|
||||
'motorblock',
|
||||
'service set',
|
||||
'serviceset',
|
||||
'service-set',
|
||||
];
|
||||
|
||||
public const ACCESSORY_PRODUCT_KEYWORDS = [
|
||||
'reagenz',
|
||||
'reagenzien',
|
||||
'reagent',
|
||||
'indikator',
|
||||
'indikatoren',
|
||||
'indicator',
|
||||
'kit',
|
||||
'set',
|
||||
@@ -49,6 +81,8 @@ class ShopServiceConfig
|
||||
'zubehör',
|
||||
'zubehor',
|
||||
'ersatz',
|
||||
'ersatzteil',
|
||||
'ersatzteile',
|
||||
'nachfüll',
|
||||
'nachfuell',
|
||||
'refill',
|
||||
@@ -57,22 +91,44 @@ class ShopServiceConfig
|
||||
'solution',
|
||||
'teststreifen',
|
||||
'test strip',
|
||||
'filter',
|
||||
'pumpenkopf',
|
||||
'motorblock',
|
||||
'service set',
|
||||
'serviceset',
|
||||
'service-set',
|
||||
];
|
||||
|
||||
public const DEVICE_PRODUCT_KEYWORDS = [
|
||||
'analysegerät',
|
||||
'analysegeraet',
|
||||
'analysegeräte',
|
||||
'analysegeraete',
|
||||
'messgerät',
|
||||
'messgeraet',
|
||||
'messgeräte',
|
||||
'messgeraete',
|
||||
'analysator',
|
||||
'analysatoren',
|
||||
'analyzer',
|
||||
'monitor',
|
||||
'monitore',
|
||||
'controller',
|
||||
'online-analysator',
|
||||
'online analysator',
|
||||
'online-analysegerät',
|
||||
'online analysegeraet',
|
||||
'online-analysegeräte',
|
||||
'online analysegeraete',
|
||||
'online analyzer',
|
||||
'online monitor',
|
||||
'system',
|
||||
'systeme',
|
||||
'anlage',
|
||||
'anlagen',
|
||||
'gerät',
|
||||
'geraet',
|
||||
'geräte',
|
||||
'geraete',
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user