public function assembleMatchExpression(MatchExpression $expr) { $fields = []; foreach ($expr->getFields() as $field) { $fields[] = $this->assembleSegment($field); } switch ($expr->getSearchModifier()) { case MatchExpression::BOOLEAN_MODE: $modifier = ' IN BOOLEAN MODE'; break; case MatchExpression::WITH_QUERY_EXPANSION: $modifier = ' WITH QUERY EXPANSION'; break; default: $modifier = ''; } $alias = ''; if ($expr instanceof MatchSelectExpression) { if ($expr->hasAlias()) { $alias = ' AS `' . $expr->getAlias() . '`'; } } return sprintf('MATCH (%s) AGAINST (%s%s)%s', implode(',', $fields), $this->assembleSegment($expr->getValue()), $modifier, $alias); }