Ben onları benim web aranmasına izin vermek için makalelerin bir dizin oluşturmak için Zend_Search_Lucene kullanıyorum. Bir yönetici güncelleştirmeleri / / admin alanında bir makale siler yaratıldığı zaman, dizini yeniden:
$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();
Benim soru budur. Ben makaleleri, yeniden dizin ve de silinen yazılar taşıma olduğum, neden ben her zaman "yaratmak" (yerine "açık" ve güncelleme) kullanmak değil mi? Yukarıdaki yöntemi kullanarak, ben makaleler addDocument her zaman (yani çiftleri olurdu) ilave olacağını düşünüyorum. Bunu nasıl önleyeceğiz? Belge zaten dizinde olup olmadığını denetlemek için bir yolu var mı?
Ayrıca, ben tam olarak "açık" ne zaman endeksleme nasıl çalıştığını anlamak ve güncellemek sanmıyorum. Bu indeks klasöründeki dosyaları her zaman (yani _0.cfs, _1.cfs, _2.cfs var) CFS. Yeni # oluşturmak gibi görünüyor, ama ben "yaratmak" kullandığınızda, yeni bir # ile bu dosyanın üzerine yazar. CFS artırılır # ile dosya (yani, örneğin, sadece _2.cfs). Bu segmente dosyaları ne açıklayabilir misiniz?