2011-05-05 14 views
5

मैं Solr के लिए नया हूँ और यह मेरा अनुक्रमण Solr डेटा का पहला प्रयास है, मैं निम्न अपवाद हो रही है, जबकि अनुक्रमण,Solr: org.apache.solr.common.SolrException: अवैध तिथि स्ट्रिंग:

org.apache.solr.common.SolrException: अमान्य तिथि स्ट्रिंग: '2011-01-07' org.apache.solr.schema.DateField.parseMath (DateField.java:165) org.apache.solr.schema पर .rieDateField.createField (TrieDateField.java:169) org.apache.solr.schema.SchemaField.createField (SchemaField.java:98) org.apache.solr.update.DocumentBuilder.addField (DocumentBuilder.java:204 पर)) org.apache.solr.update पर .DocumentBuilder.toDocument (DocumentBuilder.java:277)

मैं कुछ लेख कि Solr केवल UTC में समय संग्रहीत करता है पढ़ने से समझते हैं, यह, क्वेरी मैं सूचकांक करने के लिए कोशिश कर रहा हूँ है

आईडी का चयन करें, पाठ, 'भाषा', लिंक, tweet टाइप, स्रोत, स्थान, जैव, यूआरएल, utcOffset, timeZone, frenCnt, बनाया गया, बनाया गया ओएनजीएमटी, बनायाऑनसेवरटाइम, follCnt, favCnt, totStatusCnt, usrCrtDate, मानव संवेदना, उत्तर दिया, answerMsg, वर्गीकृत, स्थान विस्तृत, geonameid, देश, महाद्वीप, स्थान लम्बाई, स्थान अक्षांश, सूचीबद्ध सीएनटी, हैशटैग, उल्लेख, senderInfScr, बनायाOnGMTDate, DATE_FORMAT (CONVERT_TZ (बनायाOnGMTDate, '+ 00:00', '+ 05:30'), '% Y-% m-% d') आईएसटी के रूप में, DATE_FORMAT (CONVERT_TZ (रचना EDOnGMTDate, '+ 00:00', '+ 01:00'), '% Y-% m-% d') ईसीटी, DATE_FORMAT (CONVERT_TZ (बनायाOnGMTDate, '+ 00:00', '+ 02:00'), '% वाई-% एम-% डी') ईईटी, DATE_FORMAT (CONVERT_TZ (बनाया गया ओएनजीएमटीडीएटी, '+ 00:00', '+ 03:30'), '% वाई-% एम-% डी') एमईटी के रूप में , पर हस्ताक्षर (वर्गीकृत) भावना के रूप में से

मैं क्यों कर रहा हूँ इस समय क्षेत्र के रूपांतरण क्योंकि मैं उपयोगकर्ता समय क्षेत्र द्वारा समूह के परिणाम की जरूरत है। इसे कैसे प्राप्त किया जा सकता है?

सादर, रोहित

उत्तर

-3

दिनांक पहलू पूरी तरह से क्वेरी पैरा द्वारा संचालित है, इसलिए यदि हम "सत्य" समय का उपयोग करके आपकी घटनाओं को अनुक्रमित करते हैं (वे यूटीसी में एक स्ट्रिंग के रूप में स्वरूपित) तो आप जो भी टाइमज़ोन ऑफ़सेट निर्दिष्ट करते हैं, उसके बाद आप अपनी तिथि सीमा का चयन कर सकते हैं यूटीसी ऑफ़सेट के रूप में आपके उपयोगकर्ता द्वारा क्वेरी समय पर।

facet.range = dateField 
facet.range.start = 2011-01-01T00:00:00Z+${useroffset}MINUTES 
facet.range.gap = +1DAY 

यह उपयोगकर्ताओं को समय क्षेत्र में परिणाम वापसी होगी और वहाँ वास्तव में क्वेरी और अनुक्रमण उस स्तंभ को अलग-अलग समय क्षेत्र रूपांतरण के लिए कोई जरूरत नहीं है।

सादर, रोहित जवाब के लिए

क्रेडिट: क्रिस Hostetter (Solr उपयोगकर्ता समूह)

+1

जब मैंने आपके अपवाद का सही उत्तर दिया तो आप अपने आप को क्यों जवाब देते हैं (और नमस्कार)? इसके अलावा, यह उत्तर पूरी तरह से अपने प्रश्न में अपवाद से असंबंधित है! –

+1

मुझे लगता है कि आपने क्रिस होस्टेटर के जवाब को सोलर-उपयोगकर्ता में यहां कॉपी किया है, लेकिन यह जवाब ** अलग-अलग प्रश्न ** था ... –

+0

क्रेडिट जोड़ना भूल गया .. अब ऐसा हुआ है। – sesmic

16

Solr तारीखें रूप 1995-12-31T23:59:59Z में होना चाहिए। आप केवल तारीख का हिस्सा दे रहे हैं, लेकिन समय नहीं।

अधिक जानकारी के लिए DateField javadocs देखें।

+0

प्रतिक्रिया के लिए धन्यवाद, वास्तव में हम क्या प्राप्त करने की आवश्यकता, 2011 की तरह दिनांक के आधार पर परिणामों से समूह देखें -01- 2011-01-02 14 2011-01-03 40 2011-01-04 10 अब मेरी तालिका में रिकॉर्ड लाखों में चलते हैं, यूटीसी तिथि के आधार पर परिणाम समूहित करने से अधिकार नहीं होगा नतीजा यह है कि परिणाम उपयोगकर्ता समय पर समूहित किया जाना चाहिए। क्या वैसे भी हम इसे सौर में प्राप्त कर सकते हैं? – sesmic

+3

@rohitgu: इंडेक्सिंग के लिए इस प्रारूप में सौर तिथियां देने के लिए आपको ** ** की आवश्यकता है। और कोई रास्ता नहीं है। तो सबकुछ यूटीसी में बदलें, और जब आप वापस आते हैं तो परिणाम जो भी टाइमज़ोन की आवश्यकता होती है उसे वापस ले जाते हैं। –

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