/**
  * @param string $string
  *
  * @return AbstractSort[]
  */
 public function buildSortFromString($string)
 {
     $sorts = [];
     if (!empty($string)) {
         $sortBuilder = new SortBuilder();
         foreach ($this->parse($string) as $item) {
             /*
              * Position map:
              * - 0 = field name
              * - 1 = order (asc/desc)
              * - 2 = mode (min/max/sum/avg/median)
              */
             if (isset($item[0])) {
                 if ($item[0] === '_score') {
                     $sort = $sortBuilder->createScoreSort();
                 } elseif ($item[0] === '_doc') {
                     $sort = $sortBuilder->createDocSort();
                 } else {
                     $sort = $sortBuilder->createFieldSort()->setField($item[0]);
                 }
                 if (isset($item[1])) {
                     $sort->setOrder($item[1]);
                 }
                 if (isset($item[2])) {
                     $sort->setMode($item[2]);
                 }
                 $sorts[] = $sort;
             }
         }
     }
     return $sorts;
 }
 /**
  * Tests the Doc sort format.
  */
 public function testSortFormat()
 {
     $this->specify('doc sort was created', function () {
         $sort = $this->sortBuilder->createDocSort();
         verify($sort)->isInstanceOf('\\Nord\\Lumen\\Elasticsearch\\Search\\Sort\\DocSort');
     });
     $this->specify('doc sort format', function () {
         $sort = $this->sortBuilder->createDocSort();
         $array = $sort->toArray();
         verify($array)->equals('_doc');
     });
     $this->specify('doc sort format with order', function () {
         $sort = $this->sortBuilder->createDocSort();
         $sort->setOrder('asc');
         $array = $sort->toArray();
         verify($array)->equals(['_doc' => ['order' => 'asc']]);
     });
 }