<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->
<!-- EN-Revision: 24249 -->
<sect1 id="learning.lucene.searching">
    <title>検索</title>

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

    <example id="learning.lucene.searching.search-example">
        <title>インデックスを検索</title>

        <programlisting language="php"><![CDATA[
$hits = $index->find($query);

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

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

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

    <example id="learning.lucene.searching.delete-example">
        <title>索引付けされた文書を削除</title>

        <programlisting language="php"><![CDATA[
$index->delete($id);
]]></programlisting>
    </example>

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

    <example id="learning.lucene.searching.retrieve-example">
        <title>索引付けされた文書を取得</title>

        <programlisting language="php"><![CDATA[
$doc = $index->getDocument($id);
]]></programlisting>
    </example>

    <note id="learning.lucene.searching.identifiers">
        <title>内部的な文書識別番号</title>

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

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

    <para>
        特定の項目値によって結果セットを順序づけることもできます。この可能性について詳しくは、
        <link linkend="zend.search.lucene.searching.sorting">
        <classname>Zend_Search_Lucene</classname> ドキュメント</link>をご覧ください。
    </para>

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

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

    <example id="learning.lucene.searching.id-score-fields">
        <title>オリジナル文書の "id" および "score" 項目にアクセス</title>

        <programlisting language="php"><![CDATA[
$id    = $hit->getDocument()->id;
$score = $hit->getDocument()->score;
]]></programlisting>
    </example>
</sect1>
