
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: <strong>nelly</strong>, 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!
Answer1:
Couldn't you just do something like ...WHERE Query LIKE "%$search%' AND Query <> '$search'...
?
Case-insensitive: Query LIKE "%$search%' AND STRCMP(Query, '$search') == 0
Answer2:
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 <strong>only</strong> 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.