|
...
|
...
|
@@ -383,9 +383,16 @@ class UpdateSeoTdk extends Command |
|
|
|
|
|
|
|
$prefix = $this->getPrefixKeyword($project_id, 'prefix', 1, $title);
|
|
|
|
//in,for,with,to,near,from 这些介词 只拼前缀,不拼后缀
|
|
|
|
$suffix_ban = ['in ', 'for ', 'with ', 'to ', 'near ','from ', 'In ', 'For ', 'With ', 'To ', 'Near ','From '];
|
|
|
|
$is_contains_jieci = false;
|
|
|
|
$words = explode(' ', $title);
|
|
|
|
foreach ($words as $word){
|
|
|
|
$word = Str::replace([',', '!', '?'], '', $word);
|
|
|
|
if(in_array(strtolower($word), ['in', 'for', 'with', 'to', 'near','from'])){
|
|
|
|
$is_contains_jieci = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$suffix = '';
|
|
|
|
if(!Str::contains($title, $suffix_ban)){
|
|
|
|
if(!$is_contains_jieci){
|
|
|
|
// 某些后缀不能并存的情况
|
|
|
|
$ban_suffix = [];
|
|
|
|
//services/service 结尾的词,后缀不拼manufacturer,factory
|
|
...
|
...
|
@@ -590,11 +597,8 @@ class UpdateSeoTdk extends Command |
|
|
|
// 前后缀如果已经存在, 就不在拼接当前类型
|
|
|
|
if (FALSE !== strpos($topic, $keyword))
|
|
|
|
return $str;
|
|
|
|
//处理单词复数 s es ies ves
|
|
|
|
$keyword = rtrim($keyword, 'ves');
|
|
|
|
$keyword = rtrim($keyword, 'ies');
|
|
|
|
$keyword = rtrim($keyword, 'es');
|
|
|
|
$keyword = rtrim($keyword, 's');
|
|
|
|
//复数转单数
|
|
|
|
$keyword = Str::singular($keyword);
|
|
|
|
|
|
|
|
$topic_words = explode(" ", $topic);
|
|
|
|
if($type == 'prefix' && Str::startsWith($topic_words[0], $keyword)){
|
|
...
|
...
|
@@ -605,21 +609,27 @@ class UpdateSeoTdk extends Command |
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//随机取
|
|
|
|
//随机取 并单复数去重
|
|
|
|
shuffle($fix_keyword);
|
|
|
|
if (count($fix_keyword) < $num)
|
|
|
|
return implode(", ", $fix_keyword);
|
|
|
|
$keyword = array_slice($fix_keyword, 0, $num);
|
|
|
|
$str = implode(", ", $keyword);
|
|
|
|
|
|
|
|
// 前后缀内部去重
|
|
|
|
foreach ($keyword as $k=>$v){
|
|
|
|
$tmp = rtrim($v, 's');
|
|
|
|
if (substr_count($str, $tmp) > 1) {
|
|
|
|
unset($keyword[$k]);
|
|
|
|
$str = implode(", ", $keyword);
|
|
|
|
$keywords = [];
|
|
|
|
foreach ($fix_keyword as $v){
|
|
|
|
if($num == 0){
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
$is_repeat = false;
|
|
|
|
foreach ($keywords as $keyword){
|
|
|
|
if(Str::singular($keyword) == Str::singular($v)){
|
|
|
|
$is_repeat = true;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if($is_repeat){
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
$keywords[] = $v;
|
|
|
|
$num--;
|
|
|
|
}
|
|
|
|
$str = implode(', ', $keywords);
|
|
|
|
}
|
|
|
|
return $str;
|
|
|
|
}
|
...
|
...
|
|