我写了一个函数,在短语后面搜索数据库。 首先,我要查找包含该短语中所有单词的记录。其次,我要查找记录,其中包含给定短语中的任何单词。
public static function findTitleAll($fullTextWildcards) {
return \App\Offers::select(...)->where('active', '=', '1')->where('payed', '=', '1')
->where(function ($query) use ($fullTextWildcards) {
$query->orWhereRaw('MATCH (title) AGAINST ("' . $fullTextWildcards . '" IN BOOLEAN MODE)');
});
}
public static function titleAny($findTextWildcards) {
return \App\Offers::select(...)->where('active', '=', '1')->where('payed', '=', '1')
->where(function ($query) use ($findTextWildcards) {
foreach ($findTextWildcards as $value) {
$query->orWhere('title', 'like', "%" . $value . "%");
}
});
}
然后合并结果而无需重复$ result1-> merge($ result2)... e.t.c。
返回这样的结果需要很长时间。这不是一个有效的解决方案。我如何要求表格获得最相关的结果?该表目前有超过70,000条记录。
应注意有问题的字符串,例如:“ ASP / NET / C#(java开发人员)”此字符串具有特殊字符