<?php

declare(strict_types=1);

namespace App\Knowledge;

final class StopWords
{
    /**
     * Retrieval-optimierte Stopwortliste (Deutsch).
     *
     * WICHTIG:
     * - Keine Negationen entfernen
     * - Keine Fragewörter entfernen
     * - Keine fachlichen Begriffe entfernen
     * - Nur echte Füll- und Strukturwörter
     */
    private const STOP_WORDS = [

        'mit',
        // Artikel
        'der', 'die', 'das',
        'ein', 'eine', 'einer', 'eines',
        'den', 'dem', 'des',

        // Konjunktionen
        'und', 'oder', 'aber', 'sowie',

        // Schwache Pronomen
        'ich', 'du', 'er', 'sie', 'es',
        'wir', 'ihr',

        // Füllwörter
        'halt', 'eben', 'auch', 'schon',
        'noch', 'mal', 'bitte', 'danke',

        // Strukturwörter
        'also', 'nun', 'tja',
        'dann', 'danach', 'davor',
        'hier', 'dort',

        // Zeit-Füller (kontextarm)
        'heute', 'gestern', 'morgen',

        // Höflichkeits-/Modalformen
        'könnte', 'kannst', 'kann',
        'würde', 'würdest', 'würden',
    ];

    /**
     * Gibt die vollständige Stopwortliste zurück.
     */
    public static function getStopWords(): array
    {
        return self::STOP_WORDS;
    }

    /**
     * Prüft, ob ein Wort ein Stopwort ist.
     */
    public static function isStopWord(string $word): bool
    {
        return in_array($word, self::STOP_WORDS, true);
    }
}