/**
  * {@inheritdoc}
  */
 public function walkComparison(Comparison $comparison)
 {
     $value = $comparison->getValue()->getValue();
     list($type, $field) = $this->explodeCombinedFieldString($comparison->getField());
     $index = str_replace('.', '_', uniqid('', true));
     $joinField = sprintf('search.%sFields', $type);
     $joinAlias = $this->driver->getJoinAlias($type, $index);
     $this->qb->leftJoin($joinField, $joinAlias);
     $searchCondition = ['fieldName' => $field, 'condition' => Criteria::getSearchOperatorByComparisonOperator($comparison->getOperator()), 'fieldValue' => $value, 'fieldType' => $type];
     if ($type === Query::TYPE_TEXT) {
         if ($searchCondition['fieldValue'] === '') {
             $this->qb->setParameter('field' . $index, $searchCondition['fieldName']);
             return $joinAlias . '.field = :field' . $index;
         } else {
             return $this->driver->addTextField($this->qb, $index, $searchCondition, $this->setOrderBy);
         }
     }
     return $this->driver->addNonTextField($this->qb, $index, $searchCondition);
 }