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: <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.

人吐槽 人点赞

Recommend

Comment

用户名: 密码:
验证码: 匿名发表

你可以使用这些语言

查看评论:MYSQL: Like Method, Similar Words - But Don't Show the Searched Word