環境準備
- 下載 SCWS 擴展包(含
php_scws.dll、詞典 dict.utf8.xdb、規則 rules.utf8.ini),解壓至如 E:/wamp/scws
- 配置
php.ini:
extension = php_scws.dll
scws.default.charset = utf8
scws.default.fpath = "E:/wamp/scws"
分詞核心代碼
<?php
$scws = scws_new();
$scws->set_charset('utf8');
$scws->add_dict(ini_get('scws.default.fpath') . '/dict.utf8.xdb');
$scws->set_rule(ini_get('scws.default.fpath') . '/rules.utf8.ini');
$scws->set_duality(0); // 散字二元
$scws->set_ignore(0); // 忽略標點
$scws->set_multi(0);
$keywords = '要搜索的內容';
$scws->send_text($keywords);
while ($tmp = $scws->get_result()) {
foreach ($tmp as $token) {
$word = $token['word'];
// 過濾標點、長度等
if (preg_match('/^[\x{4e00}-\x{9fa5}]{2,}$/u', $word)) {
// 執行 LIKE 查詢或全文檢索
}
}
}
?>
完整搜索示例(含英文/中文混合處理)
<?php
function search($keywords, $table, $key1, $key2) {
$words = [];
if (preg_match('/^[^\x80-\xff]+$/', $keywords)) {
// 純英文按空格/逗號/句號分割
foreach (explode(' ', $keywords) as $v) {
foreach (explode(',', $v) as $v2) {
foreach (explode('.', $v2) as $v3) $words[] = $v3;
}
}
} else {
// 中文調用 SCWS
$scws = scws_new();
$scws->set_charset('utf8');
$scws->add_dict(ini_get('scws.default.fpath') . '/dict.utf8.xdb');
$scws->set_rule(ini_get('scws.default.fpath') . '/rules.utf8.ini');
$scws->set_duality(0);
$scws->set_ignore(0);
$scws->set_multi(0);
$scws->send_text($keywords);
while ($tmp = $scws->get_result()) {
foreach ($tmp as $token) {
$word = $token['word'];
if (preg_match('/^[\x{4e00}-\x{9fa5}]{2,}$/u', $word)) $words[] = $word;
}
}
}
$results = [];
foreach ($words as $word) {
$sql = $key2
? "SELECT * FROM `$table` WHERE `$key1` LIKE '%$word%' OR `$key2` LIKE '%$word%'"
: "SELECT * FROM `$table` WHERE `$key1` LIKE '%$word%'";
$results[] = mysql_query($sql);
}
return $results;
}
?>
您可能感興趣的文章:
- 開源 PHP 中文分詞系統 SCWS 安裝和使用實例
- PHP 利用 SCWS 實現 MySQL 全文搜索功能的方法
- PHPAnalysis 中文分詞類詳解
- 使用 Discuz 關鍵詞服務器實現 PHP 中文分詞
- PHP 中文分詞 自動獲取關鍵詞介紹
- PHP 中文分詞的簡單實現代碼分享