php分词器
下载分词器
https://github.com/kjcy8/phpanalysis
或者使用 composer require kjcy8/phpanalysis
例:ThinkPHP中
/**
* 分词器
* @param {string} $text 需要分割的字符串
* @param {string} $separator 分割的符号 "|在|西安|国际|港站|8台|龙门吊|正在|同时|吊装|来自|世界各地|的|集装箱"
* @return {string} $okresult 返回分割的字符串 "|在|西安|国际|港站|8台|龙门吊|正在|同时|吊装|来自|世界各地|的|集装箱"
*
* 下载分词器
* composer require kjcy8/phpanalysis
* 在项目根目录新建extends文件夹
* 把文件从vendor中拷贝出来放入
* 手动引入
* */
require_once('..'.DIRECTORY_SEPARATOR.'extends'.DIRECTORY_SEPARATOR.'phpanalysis'.DIRECTORY_SEPARATOR.'PhpAnalysis.php');
use phpanalysis\PhpAnalysis;
function wordSeparator($text, $separator='|'){
PhpAnalysis::$loadInit = false;
$pa = new PhpAnalysis('utf-8', 'utf-8', true);
//生成的分词结果数据类型 1 为全部, 2为 词典词汇及单个中日韩简繁字符及英文, 3 为词典词汇及英文
$pa->SetResultType(2);
//载入词典
$pa->LoadDict();
//执行分词
$pa->SetSource($text);
$pa->differMax = true;
$pa->StartAnalysis(true);
$okresult = $pa->GetFinallyResult('|', false);
return $okresult;
}
使用:
public function searchView(){
// 获取提交信息
$reqItem = request()->param();
// 搜索字段
$search = $reqItem['search'];
// 分词器,分词
$separator = explode(',', wordSeparator($search, ','));
//移除第一个空索引
array_splice($separator, 0, 1);
//重新赋值
// $separator=$separator;
// dump(wordSeparator($search, ','));
// 转换条件为 [['name', 'like', '%thinkphp']],
$whereArr = [];
foreach ($separator as $key => $value){
$whereArr[$key] = ['name', 'like', '%'.$value.'%'];
}
// return json($whereArr);
// 转换后,查询
$getGoods = ShopGoodsModel::
whereOr($whereArr)
->order('id', 'desc')
->select();
return view('../template/search_goods_view.html', [
'userinfo' => $userinfo ,
'search' => $search, // 搜索的文字
'searchGoods' => $getGoods, // 搜索的商品
]);
}