Forum: Ruby on Rails grep-like search help

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Ralph W. (Guest)
on 2009-02-07 03:58
Hello, noob here.

I have a table called 'entries' with lots of sentences, one per row
(id). I need to find specific sentences that have the words I'm looking
for anywhere in them. For example:

>1. The bird entered the kitchen through the door.
>
>2. You left the door of your car open.
>
>3. Close the window or the bird will get out of the car.

If I search for 'bird' and 'door', I want only the sentence with the id
1 to come up. If I search for 'door' and 'car', I want only the sentence
with the id 2 to come up. If I search for 'bird' and 'car', I want only
the sentence with the id 3 to come up.

So, basically, what this grep command would do:

> cat my.file | grep bird | grep door

But I'm not getting anywhere with any search technique or plugin I've
tried so far. Any ideas?
Simon M. (Guest)
on 2009-02-07 04:23
(Received via mailing list)
isn't that just the condition

'sentence like %bird%door%'?

Although that will only get them where they appear in that particular
order. You could interate all the possibilities

ie conditions => ['sentence like %bird%door% or sentence like
%door%bird%'] but that will get messy the more words you have in your
search.

but there might be something else you can do in SQL.

Cheers
Simon
Ralph W. (Guest)
on 2009-02-07 04:55
Simon M. wrote:
>but that will get messy the more words you have in your
> search.

Yeah, I was figuring I was gonna have to do something like an 'explode'
with the search terms at some point.
Colin L. (Guest)
on 2009-02-07 12:21
(Received via mailing list)
Would
conditions => ['sentence like %bird% and sentence like %door%']
do the job?

2009/2/7 Ralph W. <removed_email_address@domain.invalid>
Hassan S. (Guest)
on 2009-02-07 17:44
(Received via mailing list)
On Fri, Feb 6, 2009 at 5:58 PM, Ralph W.
<removed_email_address@domain.invalid> wrote:

> I have a table called 'entries' with lots of sentences, one per row
> (id). I need to find specific sentences that have the words I'm looking
> for anywhere in them.

If you're using MySQL, you can create a FULLTEXT index on the
field(s) in question and use MATCH:

<http://dev.mysql.com/doc/refman/5.0/en/fulltext-na...

Other RDBMSs may have an equivalent.

HTH,
--
Hassan S. ------------------------ removed_email_address@domain.invalid
This topic is locked and can not be replied to.