Elastica\Query\FunctionScore::addScriptScoreFunction PHP Method

addScriptScoreFunction() public method

Add a script_score function to the query.
public addScriptScoreFunction ( Elastica\Script\AbstractScript $script, AbstractQuery $filter = null, float $weight = null )
$script Elastica\Script\AbstractScript a Script object
$filter AbstractQuery an optional filter to apply to the function
$weight float the weight of the function
    public function addScriptScoreFunction(AbstractScript $script, AbstractQuery $filter = null, $weight = null)
    {
        return $this->addFunction('script_score', $script, $filter, $weight);
    }

Usage Example

Example #1
0
 /**
  * @group functional
  * @expectedException \Elastica\Exception\InvalidException
  */
 public function testArrayConfigSearch()
 {
     $client = $this->_getClient();
     $search = new Search($client);
     $index = $client->getIndex('zero');
     $index->create(array('index' => array('number_of_shards' => 1, 'number_of_replicas' => 0)), true);
     $docs = array();
     for ($i = 0; $i < 11; ++$i) {
         $docs[] = new Document($i, array('id' => 1, 'email' => '*****@*****.**', 'username' => 'test'));
     }
     $type = $index->getType('zeroType');
     $type->addDocuments($docs);
     $index->refresh();
     $search->addIndex($index)->addType($type);
     //Backward compatibility, integer => limit
     // default limit results  (default limit is 10)
     $resultSet = $search->search('test');
     $this->assertEquals(10, $resultSet->count());
     // limit = 1
     $resultSet = $search->search('test', 1);
     $this->assertEquals(1, $resultSet->count());
     //Array with limit
     $resultSet = $search->search('test', array('limit' => 2));
     $this->assertEquals(2, $resultSet->count());
     //Array with size
     $resultSet = $search->search('test', array('size' => 2));
     $this->assertEquals(2, $resultSet->count());
     //Array with from
     $resultSet = $search->search('test', array('from' => 10));
     $this->assertEquals(10, $resultSet->current()->getId());
     //Array with routing
     $resultSet = $search->search('test', array('routing' => 'r1,r2'));
     $this->assertEquals(10, $resultSet->count());
     //Array with limit and routing
     $resultSet = $search->search('test', array('limit' => 5, 'routing' => 'r1,r2'));
     $this->assertEquals(5, $resultSet->count());
     //Search types
     $resultSet = $search->search('test', array('limit' => 5, 'search_type' => 'count'));
     $this->assertTrue($resultSet->count() === 0 && $resultSet->getTotalHits() === 11);
     //Timeout - this one is a bit more tricky to test
     $mockResponse = new \Elastica\Response(json_encode(array('timed_out' => true)));
     $client = $this->getMockBuilder('Elastica\\Client')->disableOriginalConstructor()->getMock();
     $client->method('request')->will($this->returnValue($mockResponse));
     $search = new Search($client);
     $script = new Script('Thread.sleep(100); return _score;');
     $query = new FunctionScore();
     $query->addScriptScoreFunction($script);
     $resultSet = $search->search($query, array('timeout' => 50));
     $this->assertTrue($resultSet->hasTimedOut());
     // Throws InvalidException
     $resultSet = $search->search('test', array('invalid_option' => 'invalid_option_value'));
 }
All Usage Examples Of Elastica\Query\FunctionScore::addScriptScoreFunction