I have a few questions about wildcard usage with Fulltext searches (Mysql
4.1.9). I have tried to find relevant answers to these questions with no
success.
 
(1) Why is such a query as this allowed?
 
WHERE MATCH (text) 
AGAINST ('+s*' IN BOOLEAN MODE)
 
This returns everything that starts with an 's', as expected by the syntax.
Why is it not stopped by the mysql minimum word length?  I have no desire to
allow a search for every word that begins with an 's' as it can be
resourceful and will return results with questionable usage. So I'll take
care of not allowing these searches in a higher level but that leads me to
the next question.
 
(2) Why does this query also return everything that begins with an 's'
 
WHERE MATCH (text) 
AGAINST ('[EMAIL PROTECTED] <mailto:'[EMAIL PROTECTED]&s*'> &s*' IN BOOLEAN 
MODE)
 
Mysql is obviously silently stripping the list of garbage characters away
from the word, which I assume was also done with the indexed list of words.
I now have a serious issue since I what appears to be a long word, but is
really only one character long.  Putting quotes around the word seems to
force it to be taken literally but that also takes the * literally, breaking
the wildcard search.  Where can I find a list of these characters that are
silently stripped out?
 
Now take this query
 
WHERE MATCH (text) 
AGAINST ('[EMAIL PROTECTED] <mailto:'[EMAIL PROTECTED]&s*'> &s*' IN BOOLEAN 
MODE)
 
This returns all results that begin with a 't', but not 's'!
 
then this query:
 
WHERE MATCH(text) AGAINST ('[EMAIL PROTECTED]' IN BOOLEAN MODE)
 
Matches all words that beginning with a 's' or a 't'!
 
Anyone have a concise explanation just exactly how the wildcard character
works in terms of real world strings such as this?
 

Reply via email to