Elastica\Query\FunctionScore::addFieldValueFactorFunction PHP Method

addFieldValueFactorFunction() public method

public addFieldValueFactorFunction ( $field, $factor = null, $modifier = null, $missing = null, $weight = null, AbstractQuery $filter = null )
$filter AbstractQuery
    public function addFieldValueFactorFunction($field, $factor = null, $modifier = null, $missing = null, $weight = null, AbstractQuery $filter = null)
    {
        $functionParams = ['field' => $field];
        if (!is_null($factor)) {
            $functionParams['factor'] = $factor;
        }
        if (!is_null($modifier)) {
            $functionParams['modifier'] = $modifier;
        }
        if (!is_null($missing)) {
            $functionParams['missing'] = $missing;
        }
        return $this->addFunction('field_value_factor', $functionParams, $filter, $weight);
    }

Usage Example

 /**
  * @group functional
  */
 public function testFieldValueFactor()
 {
     $this->_checkVersion('1.6');
     $expected = array('function_score' => array('functions' => array(array('field_value_factor' => array('field' => 'popularity', 'factor' => 1.2, 'modifier' => 'sqrt', 'missing' => 0.1)))));
     $query = new FunctionScore();
     $query->addFieldValueFactorFunction('popularity', 1.2, FunctionScore::FIELD_VALUE_FACTOR_MODIFIER_SQRT, 0.1);
     $this->assertEquals($expected, $query->toArray());
     $response = $this->_getIndexForTest()->search($query);
     $results = $response->getResults();
     $this->assertCount(2, $results);
     $this->assertEquals(2, $results[0]->getId());
 }