【问题标题】:php MySQL multiple words searchphp MySQL 多词搜索
【发布时间】:2014-11-18 05:25:52
【问题描述】:

这是music。 table 它包含artiststitles。如果不止一位艺术家演唱一首歌曲,则艺术家之间用逗号分隔。我想设置一个搜索功能,以便用户可以搜索一位艺术家,两位艺术家,没有艺术家和标题等。

music:

|      artist     |    title   |
|------------------------------|
|eminem,lil wayne |   no love  |
|kida             |   o'najr   |

用户可以这样搜索:

eminem no love
lil wayne no love
no love eminem
no love lil wayne

用户也可以或不能输入特殊字符,如' 如果用户搜索:

kida onajr
kida o najr
kida o'najr

结果应该是一样的。

这是我到目前为止的代码:

$search_value = "...";
$query = "select * from `music` where `title` like '%$search_value%' or `artist` like '%$search_value%'";

但是,如果我搜索 lil wayne no love,则不会显示任何结果。

【问题讨论】:

标签: php mysql


【解决方案1】:

您应该使用MATCH AGAINST 进行此类搜索。

【讨论】:

  • 喜欢这个? select * from music match(title, artist) against ('%$search_value%') 这给了我一个错误。
  • 您必须将搜索值分解为单个值。这不是你的 LIKE 模式。
  • @rexhn 你必须在你的表中添加FULLTEXT(title,artist),你必须重新制作它或做一个 ALTER TABLE。阅读文档。
猜你喜欢
  • 1970-01-01
  • 2012-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-10
  • 1970-01-01
相关资源
最近更新 更多