मैं जावा/स्कैला लाइब्रेरी की तलाश में हूं जो उपयोगकर्ता क्वेरी और टेक्स्ट ले सकता है और यदि मिलान हो या नहीं तो रिटर्न कर सकता है।बूलियन खोज सिंटेक्स का उपयोग कर जावा स्ट्रिंग मिलान कैसे करें?
मैं जानकारी की एक स्ट्रीम संसाधित कर रहा हूं, यानी: ट्विटर स्ट्रीम, और बैचिंग प्रक्रिया का उपयोग करने का जोखिम नहीं उठा सकता है, मुझे ल्यूसीन रैमडिस्क के माध्यम से इसे इंडेक्स के बजाय रीयलटाइम में प्रत्येक ट्वीट का मूल्यांकन करने और बाद में पूछताछ करने की आवश्यकता है।
ANTLR का उपयोग करके एक पार्सर/लेक्सर बनाना संभव है लेकिन यह इतना आम उपयोग है कि मुझे विश्वास नहीं है कि कोई भी पहले कोई lib बना नहीं सकता है।
TextQuery Ruby library से कुछ नमूने है कि वास्तव में करता है कि मैं क्या जरूरत है:
TextQuery.new("'to be' OR NOT 'to_be'").match?("to be") # => true
TextQuery.new("-test").match?("some string of text") # => true
TextQuery.new("NOT test").match?("some string of text") # => true
TextQuery.new("a AND b").match?("b a") # => true
TextQuery.new("a AND b").match?("a c") # => false
q = TextQuery.new("a AND (b AND NOT (c OR d))")
q.match?("d a b") # => false
q.match?("b") # => false
q.match?("a b cdefg") # => true
TextQuery.new("a~").match?("adf") # => true
TextQuery.new("~a").match?("dfa") # => true
TextQuery.new("~a~").match?("daf") # => true
TextQuery.new("2~a~1").match?("edaf") # => true
TextQuery.new("2~a~2").match?("edaf") # => false
TextQuery.new("a", :ignorecase => true).match?("A b cD") # => true
एक बार जब यह रूबी में लागू किया गया था यह मेरे मंच के लिए उपयुक्त नहीं है, यह भी मैं सिर्फ हमारे समाधान पर इस बात के लिए JRuby का उपयोग नहीं कर सकते हैं:
मैं एक ऐसी ही सवाल पाया लेकिन यह से जवाब नहीं मिल सका: Boolean Query/Expression to a Concrete syntax tree
धन्यवाद!
@edgarespina ने मुझे अभी [Parboiled] (https://github.com/sirthias/parboiled/) के बारे में बताया है, यह रूबी के लिए ट्रीटॉप के साथ बहुत समान लगता है। शायद यह सबसे आसान समाधान है। – arjones