Subject: [sup-talk] [PATCH] More gmail search goodness

From: [email-masked] (Marcus Williams)
Date: Tue, 27 Nov 2007 22:34:02 +0000

Simple patch attached. Adds the "during" operator to the date searches
so you can say during:today or during:november . I prefer it to in/on
today :)

Also adds an alias for the label search of "is" so that you can do
more gmail like searches is:starred, is:unread, is:spam, is:deleted.
The last two required changing the return value to a list/pair in
parse_user_string_query and I'm not sure what the best way to do this
in ruby is. For now its a simple list. Also is there a better way to
deal with a nil result other than returning [nil,nil]? The first
element is the parsed query string, the second allows the parser to
add options to the query like :load_spam, :load_deleted which are then
used in the code already to drop (or not) the spam/deleted labeled
messages.

I figured you'd never want to search killed threads... and it made the
patch nastier because of the :skip_killed flag.

I'd like to add a has:attachment operator but the ferret index doesnt
appear to store enough info for this. It would be really nice to be
able to search for attachments (of certain types as well with
filename:...) I took a look at extending the index to add a new field
"filename" that contains a list of filenames attached to a message,
but this would break everyones index so I'm just requesting it as a
wishlist item rather than submitting a patch. With it you could do
wildcard filename attachment searches and the has:attachment search
would just be converted to a search for the presence of any filename. 

Marcus
-------------- next part --------------
A non-text attachment was scrubbed...
Name: more-gmail-search-prefix-patch
Type: application/octet-stream
Size: 2972 bytes
Desc: not available
Url : http://rubyforge.org/pipermail/sup-talk/attachments/20071127/311423df/attachment.obj

---

From: [email-masked] (William Morgan)
Date: Sat, 22 Dec 2007 16:45:54 -0800

Excerpts from Marcus Williams's message of Tue Nov 27 14:34:02 -0800 2007:
> so you can say during:today or during:november.

Applied as is. Thanks!

> in ruby is. For now its a simple list.

That's the right way.

> Also is there a better way to deal with a nil result other than
> returning [nil,nil]?

You can just return nil.

> patch nastier because of the :skip_killed flag.

Actually, by default, killed threads are always searched. It's only in
inbox-mode that you don't want to see them.

> wishlist item rather than submitting a patch.

You're right, it requires adding an attachment field to the index. I
think that adding a field to the Ferret index doesn't break index
compatibility, so this actually might not be too hard to do. You'll have
to rebuild the index to fill in the attachment status for pre-existing
messages, but the change wouldn't invalidate anyone's index.

-- 
William <wmorgan-sup at masanjin.net>

---

From: [email-masked] (vasudeva)
Date: Fri, 18 Jan 2008 11:37:07 -0500

> messages, but the change wouldn't invalidate anyone's index.

Was there every any movement in this direction? Specifically, toward a
has:attachment search function?

I ask because I find myself repeatedly running out of diskspace at work
(Outlook, 100Mb PST), which is actually almost enough space, without a
particular line of business that causes customers to mail me gigantic
attachments (1.5Mb PDF containing a 20k GIF, awesome), which I then have to go
in and delete. I mucked about with ways of programmatically seeking these out
and deleting them, before it eventually dawned on me that attachment references
aren't stored in the index.

(Business like 'is:larger-than=1000k' would be nifty.)

-- 
linkswarm.com :: Collaborative Insolence
vasudeva.linkswarm.com/gallery :: For The Faint of Heart

---

From: [email-masked] (Marcus Williams)
Date: Fri, 18 Jan 2008 17:18:00 +0000

> has:attachment search function?

Its next on my todo list :) unless someone else has picked it up.

Marcus