Senna_Records_Row クラス

class Senna_Records_Row implements ArrayAccess

Senna_Records_Rowクラスは、検索結果の1つのレコードを表現するクラスです。文書IDやスコア情報等へのアクセス手段を提供します。

このクラスはPHPコード側からインスタンス化できません。エクステンション内部で生成します。


クラス概要

<?php
$i = Senna_Index::open('/path/to/index');
$records = $i->query('楽しい 全文検索');

// 検索結果の各レコードの情報を取得
foreach ($records as $row) {
  // メソッド形式
  printf(
    "ID = %s, len = %d, score = %d, section = %d, pos = %d, subrecs = %d\n",
    $row->getKey(),     // 文書IDを取得
    $row->getKeySize(), // 文書ID長を取得
    $row->getScore(),   // スコアを取得
    $row->getSection(), // 段落番号を取得
    $row->getPosition(),// 出現位置を取得
    $row->getSubRecordCount() // 格納しているサブレコード数を取得
  );

  // ハッシュ形式
  printf(
    "ID = %s, len = %d, score = %d, section = %d, pos = %d, subrecs = %d\n",
    $row['key'],
    $row['keysize'],
    $row['score'],
    $row['section'],
    $row['position'],
    $row['subRecordCount']  // ハッシュキーの大文字小文字は区別しない
  );
}

// Senna_Records::slice()はSenna_Records_Rowの配列を返す
$page1 = $records->slice(0, 10);
foreach ($page1 as $row) {
  echo $row->getKey();
}


// サブレコード情報も取得
$records = new Senna_Records($i, Senna_Records::DOCUMENT, Senna_Records::SECTION, 20);
$records->add('楽しい 全文検索');

foreach ($records as $row) {
  echo $row->getKey(), "\n";

  // 格納しているサブレコード情報を表示。$subRowもSenna_Records_Rowオブジェクト
  $subRecords = $row->getSubRecords();
  foreach ($subRecords as $subRow) {
    printf("\tsection: %d, score = %d\n", $subRow->getSection(), $subRow->getScore());
  }
}

クラス定数

このクラスは定数を定義していません。

コンストラクタ

PHPコード側でインスタンスを生成することはできません。インスタンスは、Senna_RecordsSenna_Records_SubRecordsからレコードを取得する際にエクステンション内部で生成します。

メソッド

getKey

public string getKey()

このレコードの文書IDを返します。

ハッシュ形式でのアクセスにも対応しています。$row['key'];$row->getKey();のエイリアスになります。ハッシュキーの大文字小文字は区別しません。

  • 戻り値
    • 文書ID

getKeySize

public int getKeySize()

このレコードの文書IDの長さをバイト数で返します。

文書IDがNULL終端の可変長文字列であれば末尾のNULLを含めた長さを返します。すなわち、strlen() + 1の長さになります。

ハッシュ形式でのアクセスにも対応しています。$row['keysize'];$row->getKeySize();のエイリアスになります。ハッシュキーの大文字小文字は区別しません。

  • 戻り値
    • 文書IDの長さ(バイト数)

getScore

public int getScore()

このレコードのスコアを返します。

ハッシュ形式でのアクセスにも対応しています。$row['score'];$row->getScore();のエイリアスになります。ハッシュキーの大文字小文字は区別しません。

  • 戻り値
    • スコア

getSection

public int getSection()

このレコードの段落番号を返します。

このメソッドを使うことで、文書内の何番目の段落でマッチしたかを調べることができます。段落単位で検索するためには、Senna_Recordsのコンストラクタで検索単位またはサブレコード単位にSenna_Records::SECTIONを指定してください。

ハッシュ形式でのアクセスにも対応しています。$row['section'];$row->getSection();のエイリアスになります。ハッシュキーの大文字小文字は区別しません。

  • 戻り値
    • 段落番号

getPosition

public int getPosition()

このレコードの出現位置を返します。

このメソッドを使うことで、検索キーワードが何番目のトークンにマッチしたかを調べることができます。出現位置単位で検索するためには、Senna_Recordsのコンストラクタで検索単位またはサブレコード単位にSenna_Records::POSITIONを指定してください。

ハッシュ形式でのアクセスにも対応しています。$row['position'];$row->getPosition();のエイリアスになります。ハッシュキーの大文字小文字は区別しません。

  • 戻り値
    • 出現位置

getSubRecordCount

public int getSubRecordCount

このレコードが格納しているサブレコード数を返します。

各レコードにサブレコード情報を持たせるためには、Senna_Recordsのコンストラクタでサブレコード単位にSenna_Records::SECTIONまたはSenna_Records::POSITIONを指定してください。

ハッシュ形式でのアクセスにも対応しています。$row['subRecordCount'];$row->getSubRecordCount();のエイリアスになります。ハッシュキーの大文字小文字は区別しません。

  • 戻り値
    • 格納しているサブレコード数

getSubRecords

public Senna_Records_SubRecords getSubRecords()

このレコードが格納しているサブレコード情報を返します。

ハッシュ形式でのアクセスにも対応しています。$row['subRecords'];$row->getSubRecords();のエイリアスになります。ハッシュキーの大文字小文字は区別しません。

最終更新:2008/03/30 11:03