2010-08-31 5 views
5

मेरे पास सोलर दस्तावेज़ों का एक सेट है (अन्य क्षेत्रों के बीच) बहु-मूल्य फ़ील्ड्स प्रतिशत डेटा या -1 के साथ यदि मान शून्य है, उदा।क्या मैं बहु-मान फ़ील्ड के सदस्य द्वारा सोलर दस्तावेज़ खोज सकता हूं?

<doc> 
    ... 
    <arr name="alpha"> 
     <float>0.23</float> 
     <float>0.23</float> 
     <float>0.43</float> 
    </arr> 
    <arr name="beta"> 
     <float>0.52</float> 
     <float>-1.0</float> 
     <float>0.34</float> 
    </arr> 
    <arr name="gamma"> 
     <float>-1.0</float> 
     <float>-1.0</float> 
     <float>-1.0</float> 
    </arr> 
    ... 
</doc> 

मुझे ऐसे दस्तावेज़ ढूंढने की ज़रूरत है जहां बहु-मूल्य फ़ील्ड में परीक्षण मामलों के पूर्ण सेट के लिए कोई निश्चित सदस्य शामिल न हो। मैं काम करने के लिए नीचे दिए गए प्रश्नों के दोनों मिल सकता है, यह एक विशेष दस्तावेज़ के बाहर का पता लगाने का एक जबरदस्त मदद हो जाएगा कई सौ हजार:

1) मैं एक दस्तावेज़ मिल सकता है जहां कोई भी एक विशिष्ट के सदस्यों की बहु-मूल्य फ़ील्ड एक निश्चित मानदंड को पूरा करता है? (अगर मैंने "अल्फा के पास कोई सदस्य मिलान नहीं किया है" के लिए पूछताछ की गई है।)

2) क्या मुझे एक दस्तावेज़ मिल सकता है जहां कम से कम एक किसी विशिष्ट बहु-मूल्य फ़ील्ड के सदस्यों के सदस्यों से मिलता है एक निश्चित मानदंड? (अगर मैंने "अल्फा कम से कम एक सदस्य> 0" या "बीटा में कम से कम एक सदस्य> 0" के लिए पूछताछ की है तो उपरोक्त दस्तावेज़ वापस कर दिया जाएगा।)

मुझे लगता है कि alpha:[0 TO 1] जैसी कोई क्वेरी काम नहीं करती है क्योंकि क्षेत्र एक स्केलर के बजाय एक सरणी है। "यह असंभव है" का एक निश्चित उत्तर "यहां है कि आप इसे कैसे करते हैं" के उत्तर के रूप में उतना ही उपयोगी है - अग्रिम धन्यवाद।

EDIT: इतनी सारी समस्याओं के साथ, जवाब "आपकी धारणाओं को दोबारा जांचें" - विशेष रूप से, डेवलपर जिसने हमारे दस्तावेज़ जेनरेट किए हैं, प्रतिशत क्षेत्रों पर अनुक्रमण को बंद कर दिया है।

उत्तर

6
  1. हां। -alpha:"-1.0" इसे प्राप्त करता है।

  2. आपका स्वयं का उदाहरण, alpha:[0 TO 1], समाधान है।

यह कहने के लिए कि यह क्यों काम करता है: प्रत्येक फ़ील्ड एक मान या सरणी नहीं है, बल्कि शब्दों का एक वेक्टर है। किसी निश्चित अवधि के लिए फ़ील्ड पूछना एक समानता संचालन नहीं, समावेश (या बहिष्करण) का अनुरोध है।

जिस सरणी का आप उल्लेख कर रहे हैं वह परिणाम सेट का एक हिस्सा है, जो सादे संग्रहित डेटा है जो खोज परिणामों के हिस्से के रूप में सोलर द्वारा वापस किया जाता है।

+0

धन्यवाद। दुर्भाग्य से, मेरी वर्तमान स्थिति में भी सही क्वेरी मेरे लिए बेकार है, लेकिन कम से कम अब मुझे पता चला है कि क्यों - संपादन देखें। – Cyranix

+0

धन्यवाद, इससे मुझे बहुत मदद मिली! :) – Javatar

2

यह निश्चित रूप से संभव है।

मैं आमतौर पर FQ (फिल्टर क्वेरी) पैरामीटर का उपयोग आप क्या चाहते हैं पाने के लिए: http://wiki.apache.org/solr/CommonQueryParameters#fq

लेकिन तुम बस के रूप में अच्छी तरह से क्वेरी पर फेंक कर सकते हैं। # 1 के लिए

समाधान:

fq=-alpha:-1.0

कुछ भी अल्फा -1.0

के बराबर मैं # 2 समाधान के बारे में निश्चित नहीं हूँ है कि बाहर फ़िल्टर। क्या आपने जिस कोड का उल्लेख किया है, क्या आपने कोशिश की है?

fq=beta:[0.0 TO 1.0]

मेरे पास परीक्षण करने के लिए एक अच्छा नमूना डेटासेट नहीं है।

+0

आपके इनपुट के लिए धन्यवाद।स्पष्टीकरण के लिए – Cyranix

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