Web sitemde aranmasına izin vermek için makaleler dizini oluşturmak üzere Zend_Search_Lucene kullanıyorum. Bir yönetici güncellemeleri// yaratır yönetici alanında bir makale siler zaman, endeks yeniden oluşturulana:Zend_Search_Lucene dizinleri oluşturma ve güncelleştirme
$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();
Sorum şudur. Makaleleri yeniden dizine alıp, silinen makaleleri de işlediğimden, neden her seferinde "oluştur" u kullanmamam gerekiyor ("açık" ve "güncelleme" yerine)? Yukarıdaki yöntemi kullanarak, makalelerin her defasında addDocument ile ekleneceğini düşünüyorum (bu nedenle çiftler olacaktır). Bunu nasıl önleyebilirim? Bir belgenin dizinde var olup olmadığını kontrol etmenin bir yolu var mı?
Ayrıca, dizin açmanın "açtığınızda" ve onu güncelleştirdiğinizde nasıl çalıştığını tam olarak anlayamıyorum. İndeks klasöründe her zaman yeni # .cfs (bu yüzden _0.cfs, _1.cfs, _2.cfs) dosyaları oluşturuyor gibi görünüyor, ancak "create" kullandığımda bu dosyayı yeni bir # .cfs ile üzerine yazar. artımlı # ile dosya (örneğin, sadece _2.cfs). Bu bölümlere ayrılmış dosyaların ne olduğunu açıklayabilir misiniz?
satıldı! çok teşekkürler. – typeoneerror