protected function getCondition(Criterion $criterion)
{
$fieldNames = $this->getFieldNames($criterion, $criterion->target);
$values = (array) $criterion->value;
if (empty($fieldNames)) {
throw new InvalidArgumentException('$criterion->target', "No searchable fields found for the given criterion target '{$criterion->target}'.");
}
$fields = array();
foreach ($fieldNames as $name) {
$fields[] = 'fields_doc.' . $name;
}
$terms = array();
foreach ($values as $value) {
$terms[] = array('multi_match' => array('query' => $value, 'fields' => $fields));
}
return array('bool' => array('should' => $terms, 'minimum_should_match' => 1));
}