2011-12-15 12 views
21

में चर के साथ regex मैं सभी दस्तावेजों जिसका पाठ शब्द परीक्षण शामिल हैं खोजने की कोशिश कर रहा हूँ। नीचे ठीक काम करता है:उपयोग की तरह/mongoid

@tweets = Tweet.any_of({ :text => /.*test.*/ }) 

हालांकि, मैं उपयोगकर्ता द्वारा प्रदान की गई स्ट्रिंग की खोज करने में सक्षम होना चाहता हूं। मैंने सोचा था कि नीचे काम करेगा लेकिन यदि ऐसा नहीं होता:

searchterm = (params[:searchlogparams][:searchterm]) 
@tweets = Tweet.any_of({ :text => "/.*"+searchterm+".*/" }) 

मैं सब कुछ मैं के बारे में सोच सकता है की कोशिश की है, किसी को भी क्या मैं इस काम करने के लिए कर सकता है पता है।

अग्रिम धन्यवाद।

+0

है मैं तुम्हें जोड़ना चाहिए "i" अंत में केस संवेदी किया जा रहा बिना कि काम करने के लिए /.*test.*/i लगता है। –

उत्तर

22
searchterm = (params[:searchlogparams][:searchterm]) 
@tweets = Tweet.any_of({ :text => Regexp.new ("/.*"+searchterm+".*/") }) 

या

searchterm = (params[:searchlogparams][:searchterm]) 
@tweets = Tweet.any_of({ :text => /.*#{searchterm}.*/ }) 
+0

स्थान मुंबई और मैं मुंबई, महाराष्ट्र, भारत जैसे स्थान पारित कर रहा हूं। लेकिन यह खोज नहीं रहा है .. यहां मेरी क्वेरी इवेंट है .any_of (स्थान:/.* मुंबई महाराष्ट्र। */है) .entries। यह काम नहीं कर रहा है, लेकिन अगर मैं इसके बाद काम कर रहा हूं। कृपया सुझाव दें। –

+0

यह मेरे लिए काम करता है – fmquaglia

15

MongoDB regex क्वेरी के साथ गलत कुछ भी नहीं है। समस्या रूबी regex स्ट्रिंग के लिए चर गुजर रहा है। आप सामान्य तार

तरह regex के साथ स्ट्रिंग मिश्रण नहीं कर सकते हैं इसके बजाय

"/.*"+searchterm+".*/" 

कोशिश इस

>>searchterm = "test" 
    >>"/#{searchterm}/" 
    >> "/test/" 
+4

धन्यवाद एक गुच्छा, रमेश। मैं दूर करने के लिए "प्रारंभ और अंत और उसके बाद में अपने उदाहरण पूरी तरह से काम किया था। शानदार! – Hinchy

+0

खुशी है कि यह मदद की :) – RameshVel

+0

नहीं यह दुर्भावनापूर्ण कोड इंजेक्शन की चपेट में मैं अगर मैं खोज करने के लिए नहीं है की तरह चाहते हैं क्या करने की जरूरत है? – Aleksey

0

यह ऐसा करने से मेरे लिए काम किया:

Model.find(:all, :conditions => {:field => /regex/i}) 
0
@tweets = Tweet.any_of({ :text => Regexp.new ("/.*"+searchterm+".*/") }) 

काम है, लेकिन कोई परिणाम

@tweets = Tweet.any_of({ :text => Regexp.new (".*"+searchterm+".*") }) 

ठीक है और परिणाम

@tweets = Tweet.any_of({ :text => /.*#{searchterm}.*/ }) 

काम है, कोई परिणाम

है मेरा मोंगोइड संस्करण 3.1.3 है और रूबी संस्करण 1 है .9.3

1
@tweets = Tweet.any_of({ :text => Regexp.new (".*"+searchterm+".*") }) 

ठीक है और परिणाम

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