首頁 >後端開發 >php教程 >php中文分詞搜尋

php中文分詞搜尋

墨辰丷
墨辰丷原創
2018-06-05 15:48:365714瀏覽

本篇文章主要介紹php中文分詞搜索,有興趣的朋友參考下,希望對大家有幫助。

1、4個檔案(本站下載位址。)解壓縮後,放到一個地方eg:E:/wamp/scws

2、php.ini 中設定

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

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>
<html>
<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>

總結:以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。

相關推薦:

php整合動態口令認證(建議)

基於PHP實作微信紅包的演算法

php微信紅包隨機產生演算法詳解

############################################################################ #######

以上是php中文分詞搜尋的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn