0

インデックス ファイルのドキュメントの削除について質問があります。

私はこれを持っています:

$index = Zend_Search_Lucene::open('data/index');
foreach ($index->find('pk:' . $this->getId()) as $hit) {
        $index->delete($hit->id);
    }
$index->commit();

そして、私はLukeを使用します(インデックスファイルを開くことができます)

したがって、削除する前に、インデックスエントリに表示されます。そして、このエントリを削除した後もインデックス ファイルに存在しますが、フォルダーには _c0_del などのファイルが表示されます。これが正常な場合、削除後にインデックス ファイルに自分のエントリが表示されますか? または、私のコードにエラーがありますか? 作ってみます

 var_dump($segmentInfo->delete($id - $segmentStartId));

ZendSearch /library/ZendSearch/Lucene/Index.phpの delete メソッドで。そして、それは私にヌルを与えます。それは正常ですか?delete メソッドがインデックスからドキュメントを物理的に削除する場合、またはこのドキュメントが削除されたことを示すフラグを設定するだけですか? 私は lucene をおそらく 2 年前に使用しており、インデックス ファイルからドキュメントを物理的に削除します。そのため、削除後、Luke を介してインデックスに自分のエントリが表示されません。

4

1 に答える 1

0

Luke が削除されたドキュメントを表示しない場合、ドキュメントがまだインデックスに残っていても問題ありません。削除されたドキュメントは Lucene 検索エンジンによって考慮対象から除外されており、後のインデックス作成プロセスで物理的に削除されます。

于 2014-01-06T18:48:26.570 に答える