我正在尝试在全文搜索模式下找到这些单词。
'a&w''b&w''b&w'
查询返回这些单词的空结果。
我的查询
$results = Name_tag::where('status', 2)->take(5)->groupBy('brand_id')->whereRaw("MATCH (keyword) AGAINST (? IN BOOLEAN MODE)", $this->fullTextFullTerm($input))->get();
protected function fullTextFullTerm($input)
{
$reservedSymbols = ['-', '+', '<', '>', '@', '(', ')', '~'];
$input= str_replace($reservedSymbols, '', $input);
$words = '"'.$input.'"';
return $words;
}
我桌上的一些字
a&w黑白a&w黑白
....
没有&的其他搜索词正常工作。知道有什么问题吗?为什么全文搜索无法在其中找到包含&符号的单词?
您需要使用html_entity_decode
将HTML实体转换为字符。
所以您的代码将如下所示:
$results = Name_tag::where('status', 2)->take(5)->groupBy('brand_id')->whereRaw("MATCH (keyword) AGAINST (? IN BOOLEAN MODE)", $this->fullTextFullTerm($input))->get();
protected function fullTextFullTerm($input)
{
$reservedSymbols = ['-', '+', '<', '>', '@', '(', ')', '~'];
$input= str_replace($reservedSymbols, '', $input);
$words = '"'.$input.'"';
return html_entity_decode($words);
}