addScriptField() public method

Adds a Script to the query.
public addScriptField ( string $name, Elastica\Script\AbstractScript $script )
$name string
$script Elastica\Script\AbstractScript Script object
Example #1
0
 /**
  * @group functional
  */
 public function testSearch()
 {
     $index = $this->_createIndex();
     $type = $index->getType('test');
     $type->setMapping(new Mapping(null, array('location' => array('type' => 'geo_point'))));
     $type->addDocuments(array(new Document(1, array('location' => array('lat' => 48.8825968, 'lon' => 2.3706111))), new Document(2, array('location' => array('lat' => 48.9057932, 'lon' => 2.2739735)))));
     $index->refresh();
     $scriptFile = new ScriptFile('calculate-distance', array('lat' => 48.858859, 'lon' => 2.3470599));
     $query = new Query();
     $query->addScriptField('distance', $scriptFile);
     $resultSet = $type->search($query);
     $results = $resultSet->getResults();
     $this->assertEquals(2, $resultSet->count());
     $this->assertEquals(array(3.1494078652615), $results[0]->__get('distance'));
     $this->assertEquals(array(7.463982587692456), $results[1]->__get('distance'));
 }
Example #2
0
 /**
  * @group functional
  */
 public function testSearch()
 {
     $index = $this->_createIndex();
     $type = $index->getType('test');
     $type->setMapping(new Mapping(null, array('location' => array('type' => 'geo_point'))));
     $type->addDocuments(array(new Document(1, array('location' => array('lat' => 48.8825968, 'lon' => 2.3706111))), new Document(2, array('location' => array('lat' => 48.9057932, 'lon' => 2.2739735)))));
     $index->refresh();
     $scriptFile = new ScriptFile('calculate-distance', array('lat' => 48.858859, 'lon' => 2.3470599));
     $query = new Query();
     $query->addScriptField('distance', $scriptFile);
     try {
         $resultSet = $type->search($query);
     } catch (ResponseException $e) {
         if (strpos($e->getMessage(), 'Unable to find on disk script') !== false) {
             $this->markTestIncomplete('calculate-distance script not installed?');
         }
         throw $e;
     }
     $results = $resultSet->getResults();
     $this->assertEquals(2, $resultSet->count());
     $this->assertEquals(array(3.1494078652615), $results[0]->__get('distance'));
     $this->assertEquals(array(7.463982587692456), $results[1]->__get('distance'));
 }
Example #3
0
 /**
  * @group unit
  */
 public function testAddScriptFieldsToArrayCast()
 {
     $query = new Query();
     $scriptField = new Script('script');
     $query->addScriptField('script', $scriptField);
     $scriptField->setScript('another script');
     $anotherQuery = new Query();
     $anotherQuery->addScriptField('script', $scriptField);
     $this->assertEquals($query->toArray(), $anotherQuery->toArray());
 }