मैं "ए" और "बी" नामक दो क्षेत्रों में अपनी अनुक्रमणिका खोजना चाहता हूं। मैं Freud -- theories of psychology
तरह की खोजों दिया हूँ और मैं निम्न क्वेरी प्रदर्शन करने के लिए करना चाहते हैं:मैं या दो का उपयोग कर दो ल्यूसीन प्रश्नों को कैसे जोड़ूं?
(a="Freud" AND b="theories of psychology") OR (b="Freud" AND a="theories of psychology")
मैं यह करने के लिए कैसे करते हैं? अब तक मैं Lucene दो हिस्सों (firstHalf
और secondHalf
) MultiFieldQueryParser
का उपयोग कर निर्माण है, तो मैं उन्हें
BooleanQuery combined = new BooleanQuery();
combined.add(firstHalf, BooleanClause.Occur.SHOULD);
combined.add(secondHalf, BooleanClause.Occur.SHOULD);
लेकिन combined
के साथ संयुक्त कर दिया है की अनुमति देता है, जहां केवल "सिद्धांत" "मनोविज्ञान" पाया जाता है और नहीं परिणामों वापस करने , जहां मैं निश्चित रूप से दोनों शर्तों को चाहता हूँ। ऐसा लगता है जैसे ल्यूसीन "मनोविज्ञान की सिद्धांतों" को तीन शब्दों में विभाजित कर रहा है और उन्हें व्यक्तिगत रूप से OR के साथ संयोजित कर रहा है। मैं इसे कैसे न होने दूँ?
firstHalf
लगता है:
Query firstHalf = MultiFieldQueryParser.parse(Version.LUCENE_33,
new String[]{"Freud", "theories of psychology"},
new String[]{"a", "b"},
new BooleanClause.Occur[]{BooleanClause.Occur.MUST, BooleanClause.Occur.MUST},
analyzer);
जहां analyzer
सिर्फ एक StandardAnalyzer
वस्तु है।
बस बताया गया था कि Lucene इस तरह बूलियन तर्क का समर्थन नहीं करता है, और उस चाहिए = या!। उस स्थिति में, पृष्ठ 95 पर _Lucene एक्शन_ 2 संस्करण में गलत है। :) तो अब मुझे पता है कि मेरी क्वेरी टूटी हुई है, सिर्फ यह नहीं पता कि इसे अभी कैसे ठीक किया जाए। – dmn
क्या आप वाकई क्वेरी सही हैं? प्रश्न 'मनोविज्ञान के सिद्धांत' का अर्थ है कि कम से कम तीन शब्दों में से एक होना चाहिए, लेकिन उनमें से कोई भी एक आवश्यक शब्द नहीं है। –
@KaiChan नहीं, मुझे उस प्रतिबंध को रोकने के लिए इसे संशोधित करना पड़ा। मुझे लगता है कि मुझे यह मिला है। :) – dmn