2014-04-24 10 views
8

में स्ट्रिंग लम्बाई फ़ंक्शन क्वेरी मुझे अपने संग्रह में सभी दस्तावेज़ों को ढूंढने की आवश्यकता है जिसके लिए किसी निश्चित फ़ील्ड की लंबाई निश्चित सीमा से अधिक हो। फ़ील्ड का प्रकार स्ट्रिंग है। क्या कोई फ़ंक्शन क्वेरी है जो सोलर में एक स्ट्रिंग फ़ील्ड की लंबाई देता है?सोलर

उत्तर

24

समाधान सोलर की रेगेक्स क्षमताओं का उपयोग करना है।

title:/.{42}.*/ 
+0

मेरे पास एक दस्तावेज़ है जो "विवरण" फ़ील्ड है 2 9 2 वर्ण और 28 शब्द (संग्रह में सबसे बड़ा विवरण), लेकिन किसी भी तरह जब मैं 'विवरण पूछता हूं: /। {71}। */'0 परिणाम हैं, और पूछताछ' विवरण: /। {70}। */'मेरा दस्तावेज़ वापस कर देता है ... मुझे क्या याद आ रही है? –

+0

@joey, क्षेत्र का प्रकार क्या है? – snakile

+0

org.apache.solr.schema.TextField –

2

लंबाई से पूछताछ बॉक्स से बाहर समर्थित नहीं है, सबसे समझदार तरीका इस क्षेत्र द्वारा एक अलग (संख्यात्मक) फ़ील्ड और क्वेरी बनाना होगा।

+0

तो मैं ऐसा करने के लिए मेरी स्कीमा बदलना होगा: उदाहरण के लिए, निम्न क्वेरी सभी दस्तावेजों जिसके लिए title क्षेत्र में कम से कम 42 है पुन: प्राप्त करता? यह एक बार बात है जो मुझे करने की ज़रूरत है। वास्तव में एक लंबा क्षेत्र परिभाषित करने के लिए सबसे अच्छा तरीका है और फिर इसे फेंकने के लिए? – snakile

+2

यदि यह एक-एक चीज़ है, तो आप [सभी दस्तावेजों पर पुन: सक्रिय हो सकते हैं] (http://stackoverflow.com/questions/5051460/solr-solrj-how-to-iterate-results-without-creating-a-giant- सरणीसूची) और मैन्युअल रूप से प्रसंस्करण करते हैं। – mindas

+0

+1 क्योंकि आपका समाधान काम करता है और पूरी तरह से ठीक है, लेकिन मुझे लगता है कि मैं एक आसान के साथ आया हूं। मेरी पोस्ट देखें – snakile