Senna_Records_SubRecords クラス
class Senna_Records_SubRecords implements Traversable, ArrayAccess, Countable
Senna_Records_SubRecordsクラスは、サブレコード情報を表現するクラスです。
サブレコード情報は0個以上のサブレコード(Senna_Records_Row)の集合です。
このクラスはPHPコード側からインスタンス化できません。エクステンション内部で生成します。
クラス概要
<?php
$i = Senna_Index::open('/path/to/index');
$r->add('楽しい 全文検索');
foreach ($r as $row) {
// サブレコード情報オブジェクトを取得
$subRecords = $row->getSubRecords();
// 保持しているサブレコード数を取得
echo $subRecords->count(), "\n";
// サブレコード情報から1件のサブレコードを取得
// ($subRowはSenna_Records_Rowオブジェクト)
$subRow = $subRecords->get(0);
echo $subRow->getSection(), "\n";
// サブレコード情報から10件のサブレコードを切り出す
// ($list1, $list2は、Senna_Records_Rowオブジェクトの配列)
$list1 = $subRecords->slice(0, 10);
$list2 = $subRecords->slice(10, 10);
// 全てのサブレコードの情報を表示
// ($subRowはSenna_Records_Rowオブジェクト)
foreach ($subRecords as $subRow) {
printf(
"ID = %s, len = %d, score = %d, section = %d, pos = %d, subrecs = %d\n",
$subRow->getKey(), // 文書IDを取得
$subRow->getKeySize(), // 文書ID長を取得
$subRow->getScore(), // スコアを取得
$subRow->getSection(), // 段落番号を取得
$subRow->getPosition(),// 出現位置を取得
$subRow->getSubRecordCount() // サブレコードはサブレコードを持たないので常に0個
);
}
}
クラス定数
このクラスは定数を定義していません。
コンストラクタ
PHPコード側でインスタンスを生成することはできません。インスタンスは、Senna_Records_Rowからサブレコード情報を取得する際にエクステンション内部で生成します。
count
public int count()
このサブレコード情報オブジェクトが保持しているサブレコード数を返します。
Senna_Recordsクラスの引数max_n_subrecsで指定した数を超えることはありません。
SPLが有効な場合、Senna_Records_SubRecordsクラスはCountableインターフェイスを実装しますので、count()関数でも件数を取得できます。count($subRecords);は$subRecords->count();のエイリアスになります。
- 戻り値
- サブレコード数
slice
public array slice(int $offset, int $count)
このサブレコード情報の一部を配列として切り出します。
オブジェクトが保持している先頭のサブレコードを0番目として、offset番目から最大count個を切り出します。配列の各要素はSenna_Records_Rowオブジェクトです。
現在のところ「サブサブレコード」の概念はありませんので、切り出したSenna_Records_Rowオブジェクトに対してgetSubRecordCount()を呼ぶと必ず0を返します。
offsetの値が保持しているサブレコード数以上の場合、空の配列を返します。
- パラメータ
offset- オフセットcount- 切り出す要素数
- 戻り値
- 切り出したサブレコードの配列
- 例外
UnexpectedValueException-offsetが負の値、またはcountが1未満の場合SennaException- サブレコード情報の取得に失敗した場合
get
public Senna_Records_Row get(int $offset)
このサブレコード情報の指定された位置のサブレコードを返します。
オブジェクトが保持している先頭のサブレコードを0番目として、offset番目のサブレコードを取り出します。
現在のところ「サブサブレコード」の概念はありませんので、切り出したSenna_Records_Rowオブジェクトに対してgetSubRecordCount()を呼ぶと必ず0を返します。
ハッシュ形式でのアクセスにも対応しています。$subRecords[0];は$subRecords->get(0);のエイリアスになります。
- パラメータ
offset- オフセット
- 戻り値
- 指定されたオフセットにあるサブレコード
- 例外
OutOfBoundsException-offsetが範囲外の場合。(offset < 0)または(count() <= offset)SennaException- サブレコード情報の取得に失敗した場合
最終更新:2008/03/31 09:05