2012-08-08 8 views
17

मैं सौर परिणाम सेट से दस्तावेज़ आईडी का एक सेट कैसे बहिष्कृत कर सकता हूं? जैसेSolr में क्वेरी कैसे नहीं करें?

/select?q=tag_id:367 AND NOT id:(306670,302209)

अनिवार्य रूप से कुछ मैं इसे करने की कोशिश की है और यह उन आईडी के साथ दस्तावेजों को अलग नहीं करता।

उत्तर

20

इस प्रयास करें:

/select?q=*:*&fq=tag_id:367 AND id:[* TO *] -id:(306670 302209) 

है कि आप बाहर का निर्माण -id:302209 हर बार जब आप एक आईडी को खत्म करना चाहते हैं जोड़े बिना आप चाहते हैं के रूप में कई आईडी जोड़ने के लिए अनुमति चाहिए। रिवर्स भी सच है, आप - को + के साथ स्वैप कर सकते हैं और वहां मौजूद मानों की सरणी भी लागू कर सकते हैं।

+0

Thx। जिस पर आप सुझाव दे रहे हैं वह अभी भी आईडी के 306670 और 30220 9 के साथ दस्तावेज़ों को बहिष्कृत नहीं करता है। लेकिन यह एक करता है: '/ select? Q = *: * और fq = tag_id: 367 और -id: 306670 और -id: 302209' अनिवार्य रूप से समूह parantheses के साथ कार्यक्षमता मेरे लिए काम नहीं कर रहा है। – arun

+1

ऐसा इसलिए हो सकता है क्योंकि मैंने किसी कारण से अल्पविराम जोड़ा है, बजाय उन्हें रिक्त स्थान से अलग करने का प्रयास करें। मैं अपना कोड भी अपडेट करूंगा। – harmstyler

+0

यूप, रिक्त स्थान काम किया। धन्यवाद! – arun

8

एक समाधान मिला:

/select?q=tag_id:367&fq=-id:306670 AND -id:302209 

सुनिश्चित नहीं हूं कि यह हालांकि यह करने के लिए सबसे अच्छा तरीका है!

+0

यही तरीका है - आप आईडी भी कर सकते हैं: -306670 -302209 – Ansari

+0

Thx पुष्टि करने के लिए। हालांकि, वैकल्पिक वाक्यविन्यास मेरे लिए org.apache.lucene.queryParser.ParseException फेंक रहा है। – arun

+0

हम्म जो हो सकता है क्योंकि डिफ़ॉल्ट खोज फ़ील्ड 'id' पर सेट नहीं है। – Ansari

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