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.