Source of file DismaxSolrQueryBuilder.php
Size: 1,178 Bytes - Last Modified: 2021-12-23T10:34:35+00:00
/var/www/docs.ssmods.com/process/src/code/service/querybuilders/DismaxSolrQueryBuilder.php
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | <?php /** * Query parser for Dismax querying * * @author marcus@silverstripe.com.au * @license BSD License http://silverstripe.org/bsd-license/ */ class DismaxSolrSearchBuilder extends SolrQueryBuilder { public $title = 'Solr Dismax'; public function toString() { return $this->userQuery; } public function getParams() { parent::getParams(); $fields = ''; $sep = ''; foreach ($this->fields as $field) { $fields .= $sep . $field; if (isset($this->boost[$field])) { $fields .= '^'.$this->boost[$field]; } $sep = ' '; } $this->params['qf'] = $fields; $this->params['defType'] = 'dismax'; $filterVals = isset($this->params['fq']) ? $this->params['fq'] : array(); foreach ($this->and as $field => $valArray) { foreach ($valArray as $value) { $filterVals[] = $field. ':' .$value; } } $this->params['fq'] = $filterVals; $bq = array(); foreach ($this->boostFieldValues as $field => $boost) { $bq[] = "$field^$boost"; } if (count($bq)) { $this->params['bq'] = $bq; } if ($this->sort) { $this->params['sort'] = $this->sort; } $this->facetParams(); return $this->params; } } |