首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 整合 SCWS 中文分詞實現 MySQL 全文搜尋:安裝、配置與實戰

     編輯:PHP 綜合知識

SCWS 簡介

SCWS (Simple Chinese Word Segmentation) 是高效能中文分詞引擎,支援專有名詞、人名、地名、數字年代等規則集,準確率 90-95%,分詞速度 1.2MB/秒 (C 核心) / 250KB/秒 (PHP 擴展)。

安裝步驟

  1. 下載對應 PHP 版本的 php_scws.dll (Windows) 或編譯 scws.so (Linux)
  2. 放入 PHP 擴展目錄
  3. 下載詞典 dict.utf8.xdb 與規則 rules.utf8.ini
  4. 修改 php.ini:
extension=php_scws.dll
scws.default.charset = utf-8
scws.default.fpath = /path/to/dict.utf8.xdb
scws.default.rpath = /path/to/rules.utf8.ini

PHP 實戰程式碼

<?php
// 1. 實例化
$scws = scws_new();

// 2. 設定編碼 (需與詞典/規則/輸入文字一致)
$scws->set_charset('utf-8');

// 3. 載入詞典與規則
$scws->set_dict('/path/dict.utf8.xdb');
$scws->set_rule('/path/rules.utf8.ini');

// 4. 參數調優
$scws->set_ignore(true);   // 去除標點
$scws->set_multi(true);    // 複式分割:中國人 → 中國 + 人 + 中國人
$scws->set_duality(true);  // 雙字聚合

// 5. 送入文字
$scws->send_text("歡迎來到火星時代IT開發");

// 6. 取得分詞結果
while ($token = $scws->get_result()) {
    print_r($token);
    /* 輸出結構範例:
    Array (
        [word] => 火星
        [idf] => 5.23
        [attr] => n
        [off] => 6
        [len] => 4
    )
    */
}

// 7. 關閉釋放資源
$scws->close();
?>

高頻詞提取 (關鍵字生成)

$scws->send_text($long_text);
$top_words = $scws->get_tops(10); // 取前 10 高頻詞
foreach ($top_words as $word) {
    echo "{$word['word']} (權重: {$word['weight']})<br>";
}

版本對照表

版本類型平台PHP 版本備註
SCWS-1.1.xC 原始碼Unix/Linux-核心庫,需自行編譯
php_scws.dll(1)PHP 擴展Windows4.4.x
php_scws.dll(2)PHP 擴展Windows5.2.x
php_scws.dll(3)PHP 擴展Windows5.3.x
php_scws.dll(4)PHP 擴展Windows5.4.x修正 5.4 相容性
PSCWS23PHP 原始碼跨平台-不支援 UTF-8
PSCWS4PHP 原始碼跨平台-純 PHP 實作,效能較低

MySQL 全文搜尋整合策略

  1. 寫入資料時:用 SCWS 分詞 → 將關鍵字存入專用欄位 (如 keywords TEXT)
  2. 查詢時:對使用者輸入分詞 → 用 MATCH(keywords) AGAINST(...) 或 LIKE 條件組合
  3. MySQL 4.x 不支援中文全文索引,可儲存區位碼或改用外部搜尋引擎 (Sphinx/Elasticsearch)

重要提醒

  • 輸入文字、詞典、規則檔 編碼必須統一 (全 UTF-8 或全 GBK)
  • 生產環境建議使用 C 擴展版本,效能優於純 PHP 實作數十倍
  • 詞典可自行擴充:編輯 dict.utf8.txt 後用 scws-gen-dict 重新生成 .xdb
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved