MYSQL: похожий метод, похожие слова - но не показывать искомое слово - PullRequest
2 голосов
/ 30 марта 2010

на самом деле я использую этот метод, чтобы показать похожие слова для поискового запроса ..

$query = "SELECT * FROM searches WHERE Query LIKE '%$search%' ORDER BY Query"; 

если кто-то ищет слово "nelly", он ищет в базе данных похожие слова

"Нелли Фуртадо, Нелли Фут. Келли" ...

но я не хочу показывать искомое слово ..

пример: вы искали nelly - попробуйте это тоже: nelly , nelly furtado, nelly ft.,

жирное слово не должно появляться снова, потому что это искомое слово ... может быть есть метод с MATCH AGAINST? спасибо!

Ответы [ 2 ]

5 голосов
/ 30 марта 2010

Не могли бы вы просто сделать что-то вроде ...WHERE Query LIKE "%$search%' AND Query <> '$search'...?

Без учета регистра: Query LIKE "%$search%' AND STRCMP(Query, '$search') == 0

0 голосов
/ 29 июня 2012

Leniel - Возможно, из-за заглавных букв, что поисковый термин все еще отображается, то есть *LIKE "nelly"* найдет "nelly", "Nelly", "NeLlY" и т. Д., Тогда как * <> "nelly"* будет только исключить "nelly" (строчные буквы) из результатов.

Возможно, NOT LIKE даст лучшие результаты, или str_to_lower ваш ввод до того, как он выйдет из PHP, и сравните его с LOWER(column_name) для соответствия всем случаям.

...