MYSQL: Like Method, Similar Words - But Don't Show the Searched Word
actually i use this method to show similar words for a search request..
$query = "SELECT * FROM searches WHERE Query LIKE '%$search%' ORDER BY Query";
if someone searches for "nelly" it looks up in the database for similar words
"nelly furtado, nelly ft. kelly"...
but i dont want to show up the searched word..
example: you've searched for nelly - try this too: nelly, nelly furtado, nelly ft.,
the bold word should not showed up again, because it's the searched word.. is there maybe a 开发者_如何学运维method with MATCH AGAINST? thank you!
Couldn't you just do something like ...WHERE Query LIKE "%$search%' AND Query <> '$search'...
?
Case-insensitive: Query LIKE "%$search%' AND STRCMP(Query, '$search') == 0
Leniel
- It might be due to capitalization that search term is still showing up, i.e. *LIKE "nelly"*
will find "nelly"
, "Nelly"
, "NeLlY"
, etc. whereas * <> "nelly"*
will only exclude "nelly"
(lowercase) from the results.
Perhaps NOT LIKE would yield better results, or str_to_lower
your input before it leaves PHP and compare it to LOWER(column_name)
to match all cases.
精彩评论