$terms
*/
public function __construct(
private string $field,
private array $terms,
private string|null $minimumShouldMatchField = null,
private string|null $minimumShouldMatchScript = null,
)
{
if ($terms === []) {
throw new \Spameri\ElasticQuery\Exception\InvalidArgumentException(
'TermSet query must contain at least one term.',
);
}
if ($minimumShouldMatchField === null && $minimumShouldMatchScript === null) {
throw new \Spameri\ElasticQuery\Exception\InvalidArgumentException(
'TermSet query requires either minimumShouldMatchField or minimumShouldMatchScript.',
);
}
}
public function key(): string
{
return 'terms_set_' . $this->field . '_' . \implode('-', $this->terms);
}
/**
* @return array