public function autoCompleteAction(Request $request)
{
$q = filter_var($request->get('q'), FILTER_SANITIZE_STRING);
$search = $this->get('fos_elastica.index.search.journal');
$notCollectJournals = [];
if ($request->query->has('notCollectJournals')) {
$notCollectJournalsParam = $request->query->get('notCollectJournals');
if (!empty($notCollectJournalsParam) && is_array($notCollectJournalsParam)) {
$notCollectJournals = $notCollectJournalsParam;
}
}
$searchQuery = new Query('_all');
$boolQuery = new Query\BoolQuery();
$fieldQuery = new Query\MultiMatch();
$fieldQuery->setFields(['title']);
$fieldQuery->setQuery(strtoupper($q));
$fieldQuery->setFuzziness(0.7);
$boolQuery->addMust($fieldQuery);
$searchQuery->setQuery($boolQuery);
$searchQuery->setSize(10);
$results = $search->search($searchQuery);
$data = [];
foreach ($results as $result) {
if (!in_array($result->getId(), $notCollectJournals)) {
$data[] = ['id' => $result->getId(), 'text' => $result->getData()['title']];
}
}
return new JsonResponse($data);
}