2012-12-21 9 views
5

मैं ज़ेंड ल्यूसीन का उपयोग करके एक दस्तावेज़ को हटाने का प्रयास कर रहा हूं। निम्नलिखित जब मैं इस चलाने के लिए और मेरी सूचकांक फ़ोल्डर की जाँच की एक नई इस _f4t5_1.del की तरह बनाई गई फ़ाइलज़ेंड ल्यूसीन दस्तावेज़ समस्या हटाएं

लेकिन जब मैं एक खोज करते हैं, नष्ट कर दिया दस्तावेज़ उपलब्ध है वहाँ मेरी कोड

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

है खोज और

$ अनुक्रमणिका-> numDocs();

यह विधि हटाने से पहले और बाद में भी वही गिनती लौटाती है।

किसी भी मदद की सराहना की है।

उत्तर

3

बस इस मुद्दे को मिला। समस्या मेरे कोड में एक तार्किक त्रुटि के कारण थी। हटाने के बाद मैं एक और समारोह बुला रहा था जिसने फिर से सूचकांक में दस्तावेज़ जोड़ा। जब मैंने दस्तावेज़ आईडी की जांच की तो उसे हटाने के बाद अलग होना पाया और इससे मुझे इस मुद्दे को ट्रैक करने में मदद मिली। मदद

2

यह उपयोगी हो सकता है: php lucene how to update and delete rows in index file

क्या आप वाकई दस्तावेजों वास्तव में नष्ट हो जाती हैं बनाने के लिए की जाँच की है।

Zend_Search_Lucene :: isDeleted ($ आईडी) विधि अगर एक दस्तावेज़ हटा दी जाती है की जाँच करने के लिए इस्तेमाल किया जा सकता है।

for ($count = 0; $count < $index->maxDoc(); $count++) { 
    if ($index->isDeleted($count)) { 
     echo "Document #$id is deleted.\n"; 
    } 
} 

आप index optimization चल रहा प्रयास किया है:

सूचकांक अनुकूलन नष्ट कर दिया दस्तावेजों दूर करता है और एक छोटी श्रेणी में दस्तावेज ' आईडी निचोड़। इसलिए दस्तावेज़ ऑप्टिमाइज़ेशन के दौरान परिवर्तन हो सकता है।

+0

के लिए धन्यवाद मैंने इंडेक्स को अनुकूलित करने का प्रयास किया। ऑप्टिमाइज़ किए जाने पर इसे एक्सटेंशन .del जैसी फ़ाइलों को हटा दिया गया लेकिन सूचकांक की खोज करते समय, हटाए गए दस्तावेज़ खोज परिणामों में भी वापस आते हैं। –

+0

क्यों खोज परिणामों से हटाए गए दस्तावेज़ों को हटाने के लिए '$ index-> ​​को हटाया गया है ($ आईडी)' के माध्यम से लूप नहीं करें और उपयोग करें। – JSuar

संबंधित मुद्दे