second step

This commit is contained in:
team2
2026-04-29 20:55:21 +02:00
parent a460eee429
commit d099457534
11 changed files with 212 additions and 110 deletions

View File

@@ -21,15 +21,10 @@ use App\Tag\TagVectorSearchClient;
*/
final readonly class CatalogIntentLite
{
/**
* Slightly wider than the old top-3 search so generic tags do not crowd out
* relevant catalog_entity hits too easily.
*/
private const SEARCH_LIMIT = 6;
public function __construct(
private TagVectorSearchClient $tagVectorClient,
private QueryCleaner $queryCleaner,
private CatalogIntentConfig $config,
) {
}
@@ -52,7 +47,7 @@ final readonly class CatalogIntentLite
}
$catalogHits = $this->filterCatalogEntityHits(
$this->tagVectorClient->search($cleanQuery, self::SEARCH_LIMIT)
$this->tagVectorClient->search($cleanQuery, $this->config->getIntentSearchLimit())
);
if ($catalogHits === []) {
@@ -62,14 +57,14 @@ final readonly class CatalogIntentLite
$best = $catalogHits[0];
$bestScore = (float) ($best['score'] ?? 0.0);
if ($bestScore < CatalogIntentConfig::MIN_SCORE) {
if (!$this->config->isScoreAccepted($bestScore)) {
return null;
}
if (isset($catalogHits[1])) {
$secondScore = (float) ($catalogHits[1]['score'] ?? 0.0);
if (abs($bestScore - $secondScore) < CatalogIntentConfig::AMBIGUITY_DELTA) {
if ($this->config->isAmbiguous($bestScore, $secondScore)) {
return null;
}
}