>  기사  >  백엔드 개발  >  PHP에서 scws 중국어 단어 분할 검색을 구현하는 방법 소개

PHP에서 scws 중국어 단어 분할 검색을 구현하는 방법 소개

PHP中文网
PHP中文网원래의
2017-03-30 16:41:171105검색

이 글에서는 주로 scws 중국어 단어 분할검색을 구현하기 위한 php 방법을 소개하고, scws 중국어 단어 분할 검색의 구체적인 단계와 관련 사용법을 자세히 설명하고, scws를 제공합니다. 이 웹사이트의 다운로드 주소는 도움이 필요한 친구들이 참고할 수 있습니다.

이 글은 PHP에서 scws 중국어 단어 분할 검색을 구현하는 방법을 설명합니다. 참고용으로 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.

1, 4개 파일(이 사이트의 다운로드 주소 .

PHP에서 scws 중국어 단어 분할 검색을 구현하는 방법 소개php .cn.rar

) 압축을 푼 후 위치에 넣습니다. 예:E:/wamp/scws

구성

extension = php_scws.dll 
scws.default.charset = utf8 //配置默认的编码方式
scws.default.fpath = "E:/wamp/scws" //加压后文件的路径
php.ini

3.

$so = scws_new(); 
$so->set_charset('utf8'); //编码
// 这里没有调用 set_dict 和 set_rule 系统会自动试调用 ini 中指定路径下的词典和规则文件 
$so->add_dict(ini_get('scws.default.fpath') . '/dict.utf8.xdb');
//$so->add_dict('./dd.txt',SCWS_XDICT_TXT);
$so->set_rule(ini_get('scws.default.fpath') . '/rules.utf8.ini'); 
$so->set_duality(0);  //散字二元 
$so->set_ignore(0); //忽略标点符号
$so->set_multi(0); 
$wd='要搜索的内容';
$so->send_text($wd); 
while($tmp = $so->get_result())
//遍历后即得到字符串分割后的内容,
//根据得到的内容分别到数据库中查找(like匹配)
{
}

을 사용하여 다음과 같이 직접 테스트해 보세요.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>
</head>
<body>
<?php
function search($keywords,$table,$key1,$key2){
// (要查找的字符串,表名,字段一,字段二)如果就一个字段的话,$key2=&#39;&#39;;
 $arr=array();
 $str=array(); 
 if( preg_match("/^[^\x80-\xff]+$/", $keywords)){//判断keywords是否全为英文,全为英文的话按照字符串切割处理
 $str1=explode(&#39; &#39;,$keywords); //先按照空格切割
 foreach($str1 as $key=>$value)
 {
  $str2=explode(&#39;,&#39;,$value); //,切割
  foreach($str2 as $k=>$v)
  {
  $str3=explode(&#39;.&#39;,$v); //。切割
  foreach($str3 as $kk=>$vv)
  {
   array_push($arr,$vv);//处理完后,返回一个数组
  }
  }
 }
 }else{//对中文的分词处理
 $so = scws_new(); 
 $so->set_charset(&#39;utf8&#39;); 
  // 这里没有调用 set_dict 和 set_rule 系统会自动试调用 ini 中指定路径下的词典和规则文件 
   $so->add_dict(ini_get(&#39;scws.default.fpath&#39;) . &#39;/dict.utf8.xdb&#39;);
   $so->set_rule(ini_get(&#39;scws.default.fpath&#39;) . &#39;/rules.utf8.ini&#39;); 
   $so->set_duality(0);  //散字二元 
  $so->set_ignore(0); //忽略标点符号
  $so->set_multi(0);
 $so->send_text($keywords);
 while ($tmp = $so->get_result())//得到一个数组,里面包含词组和标点符号
 {
  foreach($tmp as $key=>$value)
  {
  $value=$value["word"];
  if(preg_match("/^[一-龥]{6,21}$/", $value))//去除标点符号
  {
   array_push($arr,$value);
  }
  }
 }
 }
 foreach($arr as $key=>$value)//便利得到的数组,到数据库中匹配
 {
 if($key2!=&#39;&#39;)
 {
  $sql="select * from `$table` where `$key1` like &#39;%$value%&#39; or `$key2` like &#39;%$value%&#39;";
 }else{
  $sql="select * from `$table` where `$key1` like &#39;%$value%&#39;";
 }
 $query=mysql_query($sql);
 array_push($str,$query);
 }
 return $str;
}
include(&#39;conn.php&#39;);
$keywords="哈哈lsd djk,hdjs dd";
$table=&#39;two_key&#39;;
$key1=&#39;address&#39;;
$key2=&#39;&#39;;
$query=search($keywords,$table,$key1,$key2);
foreach($query as $key=>$value)
{
 while($row=mysql_fetch_array($value))
 {
 echo $row[id].&#39;----&#39;.$row[name].&#39;-----&#39;.$row[address].&#39;<br>&#39;;
 }
}
?>
</body>
</html>

위는 scws 중국어 단어 분할 구현 방법에 대한 소개입니다. PHP에서 검색해 보세요. PHP 중국어 홈페이지(www.php.cn)에 주목해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.