मुझे सोलर 5.3.1 के साथ कोई समस्या है। मेरी स्कीमा अपेक्षाकृत सरल है। मेरे पास एक अद्वितीय है जो स्ट्रिंग के रूप में "आईडी" है। अनुक्रमित, संग्रहीत और आवश्यक, गैर-बहुगुणित।सोलर ओवरराइट नहीं करता है - डुप्लीकेट अनन्यकी प्रविष्टियां
मैं पहले "content_type: document_unfinished" के साथ दस्तावेज़ जोड़ता हूं और फिर उसी आईडी के साथ उसी दस्तावेज़ के साथ ओवरराइट करता है लेकिन अन्य सामग्री_ प्रकार: दस्तावेज़। दस्तावेज सूचकांक में दो बार है। फिर, स्ट्रिंग के रूप में, एकमात्र अद्वितीयकि "आईडी" है। आईडी मूल रूप से एक mysql-index प्राथमिक int से आ रही है।
भी लगता है कि यह न केवल एक बार होता है:
http://lucene.472066.n3.nabble.com/uniqueKey-not-enforced-td4015086.html
http://lucene.472066.n3.nabble.com/Duplicate-Unique-Key-td4129651.html
मेरे मामले में नहीं सूचकांक में सभी दस्तावेजों को दोहराया गया है, बस कुछ। मैं मान रहा था - शुरुआत में - जब वे सूचकांक में एक ही अद्वितीय कुंजी मौजूद होते हैं तो वे प्रतिबद्धता पर ओवरराइट हो रहे हैं। जो मुझे लगता है कि काम करने की प्रतीत नहीं होती है। मैं दस्तावेज़ में कुछ फ़ील्ड बस अपडेट नहीं करना चाहता, मैं इसे सभी बच्चों के साथ पूरी तरह से बदलना चाहता हूं।
कुछ आंकड़े: सूचकांक में लगभग 350k दस्तावेज़। ज्यादातर बच्चे दस्तावेज़ों के साथ। दस्तावेजों को "content_type" फ़ील्ड द्वारा प्रतिष्ठित किया जाता है। मैंने उन्हें इस तरह आयात करने के लिए सोलरजे का उपयोग किया:
HttpSolrServer server = new HttpSolrServer(url);
server.add(a Collection<SolrInputDocument>);
server.commit();
मैं हमेशा सभी बच्चों के साथ एक संपूर्ण दस्तावेज़ जोड़ रहा हूं। इसका कुछ भी फैंसी नहीं है। मैं एक ही अद्वितीय के लिए डुप्लिकेट दस्तावेज़ों के साथ समाप्त होता हूं। कोई पक्ष इंजेक्शन नहीं हैं। मैं एकीकृत जेटी के साथ केवल सोलर चलाता हूं। मैं जावा में "मैन्युअल रूप से" ल्यूसीन इंडेक्स नहीं खोलता हूं।
मैंने फिर से + डालने के लिए क्या किया था। यही कारण है कि कुछ समय के लिए काम करने के लिए लग रहा था, लेकिन फिर शुरू कर दिया के तहत कुछ शर्तों यह त्रुटि संदेश दे:
जनक क्वेरी पैदावार दस्तावेज है जो माता-पिता से मेल नहीं खाता फ़िल्टर कर
दस्तावेज़ जहां ऐसा होता है प्रतीत हो रहा है पूरी तरह से यादृच्छिक, केवल एक चीज उभरती प्रतीत होती है: यह एक बच्चा दस्तावेज़ जहां होता है। मैं कुछ विशेष नहीं चलाता, मूल रूप से वेबसाइट से सोलर पैकेज डाउनलोड करता हूं और इसे bin/solr start
कोई भी विचार किसी भी विचार से चलाता है?
संपादित करें 1
मैं मैं इस समस्या है, जो एक बग हो रहा है पाया लगता है? इस मुद्दे को पुन: उत्पन्न करने के लिए:
मैंने वर्चुअलबॉक्स में एक डेबियन में सोलर 5.3.1 डाउनलोड किया और इसे bin/solr start
से शुरू किया। मूल विन्यास सेट के साथ एक नया कोर जोड़ा गया। मूल कॉन्फ़िगरेशन सेट पर कुछ भी नहीं बदला, बस इसे कॉपी किया और कोर जोड़ा।
इस सूचकांक में एक ही आईडी वाले दो दस्तावेज़ों की ओर जाता है:
SolrClient solrClient = new HttpSolrClient("http://192.168.56.102:8983/solr/test1");
SolrInputDocument inputDocument = new SolrInputDocument();
inputDocument.setField("id", "1");
inputDocument.setField("content_type_s", "doc_unfinished");
solrClient.add(inputDocument);
solrClient.commit();
solrClient.close();
solrClient = new HttpSolrClient("http://192.168.56.102:8983/solr/test1");
inputDocument = new SolrInputDocument();
inputDocument.setField("id", "1");
inputDocument.setField("content_type_s", "doc");
SolrInputDocument childDocument = new SolrInputDocument();
childDocument.setField("id","1-1");
childDocument.setField("content_type_s", "subdoc");
inputDocument.addChildDocument(childDocument);
solrClient.add(inputDocument);
solrClient.commit();
solrClient.close();
साथ सर्च कर रहे हैं:
http://192.168.56.102:8983/solr/test1/select?q=% 3 ए & wt = json & मांगपत्र = सच
की ओर जाता है निम्नलिखित आउटपुट:
{
"responseHeader": {
"status": 0,
"QTime": 0,
"params": {
"q": "*:*",
"indent": "true",
"wt": "json",
"_": "1450078098465"
}
},
"response": {
"numFound": 3,
"start": 0,
"docs": [
{
"id": "1",
"content_type_s": "doc_unfinished",
"_version_": 1520517084715417600
},
{
"id": "1-1",
"content_type_s": "subdoc"
},
{
"id": "1",
"content_type_s": "doc",
"_version_": 1520517084838101000
}
]
}
}
मैं क्या गलत कर रहा हूँ?
मैं वर्तमान में एक स्थिति है जिसमें से मिलता-जुलता हो रहा है का सामना करना पड़ रहा हूँ: मैं भी SolrJ उपयोग करते हैं, मैं भी childDocuments, का उपयोग करें और मैं भी अभी हाल ही में पता चला , कि एक दस्तावेज़ के एक सादे अद्यतन पर, af सूचकांक में एक ही अद्वितीय कुंजी के साथ दस्तावेज दो बार मौजूद है। मैंने यह भी सोचा कि मैं solrClient के माध्यम से दस्तावेज़ को स्पष्ट रूप से हटाने की कोशिश कर सकता हूं।deleteById (आईडी), जो समस्या को हल करने के लिए प्रतीत होता है - हालांकि, चूंकि आप कहते हैं कि यह एक वास्तविक फिक्स नहीं है, मैं अभी भी चिंता करता हूं। – SebastianRiemer
मैंने एक छोटा जावा परीक्षण एप्लिकेशन लिखा है जो आपके द्वारा वर्णित समस्या उत्पन्न करता है। यह यहां पाया जा सकता है: https://github.com/sebastianriemer/SolrDuplicateTest मुझे यह जानने में दिलचस्पी होगी कि आपको मेरे जैसा ही परिणाम मिल रहा है या नहीं। मैंने सोलर-यूजर मेलिंग सूची में भी लिखा और जवाब यहां वापस पोस्ट करेंगे। – SebastianRiemer
मुझे लगता है कि मैं कहीं पढ़ रहा था कि सोलर बिना किसी दस्तावेज के दस्तावेजों का इलाज कर रहा है। मुझे याद नहीं है कि मैं इसे कहां पढ़ रहा था, लेकिन मैंने पहले दस्तावेज़ से तुरंत एक उप-दस्तावेज़ जोड़ना शुरू कर दिया। ओवरराइटिंग तब से मेरे लिए काम करता है - लेकिन मैं अभी भी इसे सोलर से "बग" के रूप में मानता हूं जो अनन्य कुंजियों का इलाज नहीं करता ... जैसा कि ... अद्वितीय है। मैं हर दिन सूचकांक में कुछ 10k दस्तावेज़ जोड़ रहा हूं और यह काम करता है। –