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