文檔說明

XSDocument 文檔

XSDocument 是用于描述檢索/索引的基礎對象,包含一組字段及其值。相當于常規 SQL 數據表中的一行記錄。 通過魔術方法,每個字段名都是文檔的虛擬屬性,可直接賦值或取值,也支持數組下標方式訪問文檔字段。

$doc = new XSDocument;
$doc->name = 'value'; // 用對象屬性方式進行賦值、取值
$doc['name'] = 'value'; // 用數組下標方式進行賦值、取值
$value = $doc->f('name'); // 用函數方式進行取值
$doc->setField('name', 'value'); // 用函數方式進行賦值
$doc->setFields(array('name' => 'value', 'name2' => 'value2')); // 用數組進行批量賦值
 
// 迭代方式取所有字段值
foreach($doc as $name => $value) 
{
    echo "$name: $value\n";  
}

用于索引更新的文檔對象和搜索結果返回中略有不同,下面分開講解。

1. 搜索結果文檔

搜索結果文檔是指 XSSearch::search 返回值包含的文檔,它由 PHP-SDK 內部代碼創建。 除了普通文檔的功能外,還支持以下魔術方法來訪問搜索結果的元數據:

  • docid() 取得搜索結果文檔的 docid 值 (實際數據庫內的 id,一般用不到)
  • rank() 取得搜索結果文檔的序號值 (第X條結果)
  • percent() 取得搜索結果文檔的匹配百分比 (結果匹配度, 1~100)
  • weight() 取得搜索結果文檔的權重值 (浮點數)
  • ccount() 取得搜索結果折疊的數量 (按字段折疊搜索時才有效)

訪問結果文檔的字符集默認是與 XSSearch::setCharset 所指定的字符集一致的,如未指定過則為 XS::defaultCharset。 雖然您可以通過 XSDocument::setCharset 來強制修改文檔的字符集,但不推薦這樣做,也沒必要這樣做。

2. 索引文檔

索引文檔是指由用戶創建,并用于提交更新到索引庫中的文檔,創建文檔時允許傳入字符集作為構造函數的參數, 如未傳入,則自動視為項目的默認字符集 XS::defaultCharset,如果字符集不是 UTF-8 的系統內部會 自動進行轉換,但要求 PHP 帶有中文轉碼擴展 (iconvmbstring)

$doc = new XSDocument;  // 使用默認字符集
$doc = new XSDocument('gbk'); // 指定文檔為 GBK 編碼
$doc = new XSDocument($data); // 數組 $data 為初始字段數據, 編碼則為默認編碼
$doc = new XSDocument($data, 'gbk'); // 數組 $data 為字段數據, 編碼為 GBK
 
// 然后進行一系列賦值操作
 
// 提交到索引中
$xs->index->add($doc);

如果您希望在 XSDocument 提交到索引前、后進行一系列必要的操作,您可以對 XSDocument 進行擴展, 重寫 XSDocument::beforeSubmitXSDocument::afterSubmit 方法來實現,比如擴展代碼為 $prefix/sdk/php/lib/MyDocument.class.php。

class MyDocument extends XSDocument
{
    public function beforeSubmit(XSIndex $index)
    {
        // 在此編寫您的代碼,如需要中斷添加請提前返回 false
        // ...
        return parent::beforeSubmit($index);
    }
 
    public function afterSubmit(XSIndex $index)
    {
        // 在此編寫您的代碼,只有加入索引成功后才會執行
        // ...
    }    
}
 
$doc = new MyDocument('gbk');
$doc->pid = 123;
$doc->subject = 'Hello, 測試';
$doc->message = '測試的內容在此';
$xs->index->add($doc);
$Id$

留下一條評論吧!

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

青海快三开奖走势图_ 长投股票分析师 福建快三走势图结果今天 广东11选5任三预测 国内期货可以配资 七星彩排列五玩法介绍 陕西11选5复式怎么玩 贵州遗漏快3 黑金快乐8登录网址导航 好运彩99937_com手机登录 湖北快3跨度振幅走势图