Devtoid

Полнотекстовый поиск в ORM с whereMatch в Битрикс

Когда LIKE уже не вывозит

Полнотекстовый поиск позволяет весьма быстро находить нужную информацию в больших объемах текста. В нашем случае для поиска строки в огромной таблице необходимо проделать следующие нехитрые манипуляции.

Во первых нужно добавить fulltext индекс на интересующие нас поля таблицы.

Во вторых, воспользользоваться кодом ниже, заменив модель и поле на желаемые

$query = 'Ultimate cup of coffee';
$searchQuery = new CSearchQuery();
$parseQuery = $searchQuery->ParseQ($searchQuery->StemQuery($query));
EarthTable::query()
  ->whereMatch('CUP', (new CSearchMysql())->PrepareQuery($searchQuery, $parseQuery))
  ->exec();