文檔說明

在 Xunsearch 使用 SCWS

為了便于用戶在安裝完 Xunsearch 后可以通過服務端內置的 scws[1] 實現分詞, 而不需要另外再安裝 scws 的 php 擴展。從 1.3.1 版本起,Xunsearch 的 PHP-SDK 中加入 XSTokenizerScws 類,可通過搜索服務端執行分詞功能。

1. 用法簡單說明

這兒只做簡單介紹和示范,更多詳細的用法請點擊閱讀類參考手冊 XSTokenizerScws。

創建分詞對象

$xs = new XS(...);  // 必須先創建一個 xs 實例,否則會拋出異常
$tokenizer = new XSTokenizerScws;   // 直接創建實例

獲取分詞結果

調用 XSTokenizerScws::getResult 對參數指定的文本字符串執行分詞, 并返回詞匯數組,每個詞匯包含 3 個元素,其中:

  • off 表示這個詞匯在源參數文本 $text 中的起始偏移位置
  • attr 這個詞匯的詞性,使用北大標注
  • word 分好的詞條
$text = '迅搜(xunsearch)是優秀的開源全文檢索解決方案';
$words = $tokenizer->getResult($text);
print_r($words);

提取重要詞匯

調用 XSToenizerScws::getTops 可以簡單提取重要詞匯,它支持三個參數, 返回的詞匯數組元素和分詞結果類似,只是把 off 替換為 times 表示這個詞在文本中出現的總次數。

$text = '迅搜(xunsearch)是優秀的開源全文檢索解決方案';
// 提取前 5 個重要詞,要求詞性必須是 n 或v 或 vn
$tops = $tokenizer->getTops($text, 5, 'n,v,vn');
print_r($tops);

判斷是否包含指定詞性的詞匯

這項功能通過 XSTokenizerScws::hasWord 完成,主要目的是用于類似黑詞判斷。 您可以自制一個詞典,并將黑詞統一設置為一個獨特的屬性,比如 "@", 那么就可以用該功能判斷一段文本是否包含黑詞。

$text = '...';
if ($tokenizer->hasWord($text, '@')) {
    // 包含詞性為 '@' 的詞
}
else {
    // 為包含詞性為 '@' 的詞
}
2. 使用注意事項
  • 這個分詞類底層實現是與搜索服務端通訊完成的,因此在使用前必須先初始化一個 XS 對象

  • 這個分詞器雖然實現了 XSTokenizer::getTokens,但不推薦直接指定到配置文件的 tokenizer 選項中,因為這樣做只會讓性能更低。

$Id$

留下一條評論吧!

請到論壇 登錄 后刷新本頁面!

青海快三开奖走势图_ 湖北11选5精准任5预测 上海十一选五五走势图表 东方6十1专家预测 福建快三遗漏 短线交易五大绝技 河北排列7走势图 炒股平台怎么样 四川快乐12直选三遗漏 快3玩法绝招 在线配资ra股牛网