Hi Pat,

On 18 Feb 2010, at 08:04, Pat Allan wrote:
> As you've alluded to at the end, the other match modes make assumptions 
> tricky... and so I'm hesitant to run everything through Riddle.escape...
> I don't want to presume that the user wants every custom character escaped 
> automatically (because what if they're using boolean logic?)

Yeah, I was only suggesting Riddle.escape as a solution for the simplest case 
where the user was explicitly (or implicitly by default) asking for :match_mode 
=> :all. For :boolean you'd have to do something (significantly?) more complex, 
but even issuing a warning ("Warning: you've specified both :conditions and 
:match_mode => :boolean, which are incompatible; using :match_mode => :extended 
instead, which may change the meaning of your query") would be better than 
silently switching the match mode and potentially making a nonsense of the 
intended query.

> maybe we can have conditions automatically have @'s escaped?
> So, does this sound like a decent solution?

It would deal with my specific case -- I sent my initial message exactly 
because I'd spotted that searches for email addresses weren't working right -- 
but it seems like a dodge for the real problem, and might cause other hassles 
that I haven't thought of. From my perspective the available options are:

* Do nothing (i.e. rely on the docs to explain this situation);
* Emit a warning whenever :conditions is supplied but :match_mode is anything 
other than :extended;
* Automatically fix up any conditions with Riddle.escape when :match_mode is 
:all (or should that be :any?), and emit a warning whenever :conditions is 
supplied but :match_mode is anything other than :all (:any?) or :extended; or
* Write a parser which, given a query string and its intended match mode, can 
construct an internal representation of the query and then "serialize" that 
representation back out into an extended mode query string, and then use this 
parser/serializer to convert each condition into its extended mode equivalent.

Feel free to choose option 1. :-) But if you're interested in any of the other 
options, I'd be happy to try implementing something.

Cheers,
-Tom

-- 
You received this message because you are subscribed to the Google Groups 
"Thinking Sphinx" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/thinking-sphinx?hl=en.

Reply via email to