検索

検索は、find() メソッドを使って実行されます。

例8 インデックスを検索

$hits = $index->find($query);

foreach ($hits as $hit) {
    printf("%d %f %s\n", $hit->id, $hit->score, $hit->title);
}

この例は、2つの特別な検索ヒット・プロパティ、 id および score の使用法を示します。

id は、Lucene インデックス内で使用される内部的な文書識別番号です。 それは、インデックスから文書を削除することを含む、様々な操作のために使われるでしょう。

例9 索引付けされた文書を削除

$index->delete($id);

あるいは、インデックスによって文書を取得します。

例10 索引付けされた文書を取得

$doc = $index->getDocument($id);

内部的な文書識別番号

重要事項!内部的な文書識別番号は、インデックスの最適化または自動最適化処理によって変わるかもしれません。 しかし、(自動最適化処理に含まれるであろう) addDocument() や、optimize() メソッドが呼び出されない限り、 単一のスクリプト実行中には決して変わりません。

score項目は、ヒット・スコアです。 検索結果は、デフォルトで得点によって順序づけられます。(最高の結果は、最初に戻されます)

特定の項目値によって結果セットを順序づけることもできます。この可能性について詳しくは、 Zend_Search_Lucene ドキュメントをご覧ください。

その例は、格納された項目にアクセスする能力も示します。 (例えば、$hit->titleid または score 以外のいずれかのヒット・プロパティーに初めてアクセスすると、 文書の保管された項目が読み込まれ、対応する項目値が返されます。

これは、それら自身の id または score 項目を持つ文書にあいまいさを引き起こします。 その結果、保管された文書内でそれらの項目名を使うことはお勧めしません。 とはいっても、それらは getDocument() メソッドを通じて、 今まで通りアクセスできます。

例11 オリジナル文書の "id" および "score" 項目にアクセス

$id    = $hit->getDocument()->id;
$score = $hit->getDocument()->score;