私はZend_Search_Luceneを使用して記事のインデックスを作成し、自分のウェブサイトでそれらを検索できるようにしています。たび管理者の更新は/作成/管理エリアの資料を削除し、インデックスが再構築されます。Zend_Search_Luceneインデックスの作成と更新
$config = Zend_Registry::get("config");
$cache = $config->lucene->cache;
$path = $cache . "/articles";
try
{
$index = Zend_Search_Lucene::open($path);
}
catch (Zend_Search_Lucene_Exception $e)
{
$index = Zend_Search_Lucene::create($path);
}
$model = new Default_Model_Articles();
$select = $model->select();
$articles = $model->fetchAll($select);
foreach ($articles as $article)
{
$doc = new Zend_Search_Lucene_Document();
$doc->addField(Zend_Search_Lucene_Field::Text("title", $article->title));
$index->addDocument($doc);
}
$index->commit();
私の質問はこれです。私は記事を再索引付けしていて、削除された記事を扱うので、なぜ「開く」と更新するのではなく、毎回「作成」を使用するだけではないのですか?上記の方法を使用すると、私は記事が毎回addDocumentで追加されると思います(重複があるように)。どのように私はそれを防ぐだろうか?既にインデックスにドキュメントが存在するかどうかを確認する方法はありますか?
また、「開く」と更新するときのインデックス作成の仕組みを完全に理解しているとは思いません。新しい#.cfs(だから私は_0.cfs、_1.cfs、_2.cfs)のファイルをインデックスフォルダに作成するようだが、私が "作成"を使うと、そのファイルを新しい#.cfsで上書きする#がインクリメントされたファイルです(したがって、たとえば_2.cfsだけです)。これらの分割ファイルの内容を教えてください。
が販売されました。どうもありがとう。 – typeoneerror