Files
Phraseanet/lib/Alchemy/Phrasea/SearchEngine/Elastic/AST/KeyValue/ExistsExpression.php
jygaulier 1e7092b86a [skip ci] PHRAS-3417_search-empty-fields_MASTER
add : special values "_empty_" and "_any_" to search empty field or not-empty field. Works only with = operator.
e.g.: Title=_empty_

wip/todo : unit test ; facet
2021-04-15 17:31:22 +02:00

46 lines
1002 B
PHP

<?php
namespace Alchemy\Phrasea\SearchEngine\Elastic\AST\KeyValue;
use Alchemy\Phrasea\SearchEngine\Elastic\AST\Node;
use Alchemy\Phrasea\SearchEngine\Elastic\Search\QueryContext;
use Alchemy\Phrasea\SearchEngine\Elastic\Search\QueryPostProcessor;
class ExistsExpression extends Node
{
const EXISTS_VALUE = '_any_';
private $key;
private $value;
public function __construct(Key $key)
{
$this->key = $key;
}
public function buildQuery(QueryContext $context)
{
$query = [
'exists' => [
'field' => $this->key->getIndexField($context, true)
]
];
if ($this->key instanceof QueryPostProcessor) {
return $this->key->postProcessQuery($query, $context);
}
return $query;
}
public function getTermNodes()
{
return array();
}
public function __toString()
{
return sprintf('(<%s> == <%s>)', $this->key, self::EXISTS_VALUE);
}
}