मेरे पास "यूनीककेय" के साथ एक ल्यूसीन इंडेक्स है
<uniqueKey>ID</uniqueKey>
जहाँ तक मुझे पता है, इस कुंजी को "पाठ" (इंट या लंबे समय तक नहीं) होना है।
<field name="ID" type="string" indexed="true" stored="true"/>
एक छोटे से एप्लिकेशन ने केवल उन रिकॉर्ड्स में खोज करने के लिए ल्यूसिन इंडेक्स का इस्तेमाल किया, जो उस एप्लिकेशन के अंतिम भाग में जोड़े जाते हैं।
उस लक्ष्य तक पहुँचने के लिए, मैं निम्नलिखित कोशिश कर रहा हूँ।
- अंतिम आईडी लोड करें (फ्लैटफाइल से) चर $ oldID में
- वर्तमान (अंतिम / उच्चतम) आईडी प्राप्त करें चर में सॉल / ल्यूसिन से $ currentID
- के बीच एक श्रेणी खोज निष्पादित करें $ पुराना और $ currentID
- $ CurrentID को एक फ्लैट फ़ाइल में सहेजें अगली खोज के लिए / अगले रन के लिए
दुर्भाग्य से मैं एक समस्या नोटिस:
ए) उच्चतम आईडी कैसे खोजें?
या बी) मैं एक अंक के रूप में अद्वितीय कुंजी को कैसे संभालता हूं, पाठ / चार को नहीं
मैंने कुछ इस तरह की कोशिश की:
http://localhost:8080/solr/select/?defType=func&q=max(ID,0)&fq=ID:[$oldID+TO+$currentID]&fl=ID
... जो अजीब लगता है रिटर्न: "999999" उच्चतम मूल्य के रूप में। यह सही नहीं है, क्योंकि उच्चतम आईडी 1043725 है। मुझे लगता है कि यह इसलिए है क्योंकि आईडी एक टेक्स्ट-फील्ड है
सी।) हो सकता है कि कोई अन्य तरीका केवल अंतिम जोड़े गए रिकवर में खोजा जाए?
किसी भी तरह की मदद के लिए धन्यवाद!
उत्तर:
जवाब के लिए 2 № 1सोलर का यूनिकके फील्ड किसी का भी समर्थन कर सकता हैडेटा प्रकार वर्ग जो सोल्र का समर्थन करता है। जबकि अंतर्निहित Lucene index खुद ही सभी संग्रहीत / अनुक्रमित डेटा को पाठ के रूप में मानता है, Solr डेटा प्रकारों के अनुसार अनुक्रमित डेटा के इलाज के लिए अनुवाद का प्रबंधन करता है।
The स्ट्रिंग फ़ील्ड-प्रकार प्रतिबंध आप "की चर्चा करते हुए फिर से है अगर आप solr config में क्वेरयेल्वैशनघटक सक्षम है ।यदि आपने उस सुविधा को सक्षम नहीं किया है, तो आप अपनी यूनिक्वेक को अपनी समस्या को हल करने के लिए एक लंबा कर सकते हैं ।