/**
* Create a select statement, with prepared bindings, for the given
* set of scored search terms.
+ *
* @return array{statement: string, bindings: string[]}
*/
protected function selectForScoredTerms(array $scoredTerms): array
$ifChain = '0';
$bindings = [];
foreach ($scoredTerms as $term => $score) {
- $ifChain = 'IF(term like ?, score * ' . (float)$score . ', ' . $ifChain . ')';
+ $ifChain = 'IF(term like ?, score * ' . (float) $score . ', ' . $ifChain . ')';
$bindings[] = $term . '%';
}
return [
'statement' => 'SUM(' . $ifChain . ') as score',
- 'bindings' => array_reverse($bindings),
+ 'bindings' => array_reverse($bindings),
];
}
}
$case = 'CASE ' . implode(' ', $whenStatements) . ' END';
- $termQuery->selectRaw( $case . ' as term', $whenBindings);
+ $termQuery->selectRaw($case . ' as term', $whenBindings);
$termQuery->selectRaw('COUNT(*) as count');
$termQuery->groupByRaw($case, $whenBindings);
- $termCounts = $termQuery->get()->pluck('count', 'term')->toArray();
+ $termCounts = $termQuery->pluck('count', 'term')->toArray();
$adjusted = $this->rawTermCountsToAdjustments($termCounts);
$this->termAdjustmentCache[$options] = $adjusted;
+
return $this->termAdjustmentCache[$options];
}
/**
* Convert counts of terms into a relative-count normalised multiplier.
+ *
* @param array<string, int> $termCounts
+ *
* @return array<string, int>
*/
protected function rawTermCountsToAdjustments(array $termCounts): array
{
+ if (empty($termCounts)) {
+ return [];
+ }
+
$multipliers = [];
$max = max(array_values($termCounts));
try {
$date = date_create($input);
$query->where('updated_at', '>=', $date);
- } catch (\Exception $e) {}
+ } catch (\Exception $e) {
+ }
}
protected function filterUpdatedBefore(EloquentBuilder $query, Entity $model, $input): void
try {
$date = date_create($input);
$query->where('updated_at', '<', $date);
- } catch (\Exception $e) {}
+ } catch (\Exception $e) {
+ }
}
protected function filterCreatedAfter(EloquentBuilder $query, Entity $model, $input): void
try {
$date = date_create($input);
$query->where('created_at', '>=', $date);
- } catch (\Exception $e) {}
+ } catch (\Exception $e) {
+ }
}
protected function filterCreatedBefore(EloquentBuilder $query, Entity $model, $input)
try {
$date = date_create($input);
$query->where('created_at', '<', $date);
- } catch (\Exception $e) {}
+ } catch (\Exception $e) {
+ }
}
protected function filterCreatedBy(EloquentBuilder $query, Entity $model, $input)