2014-09-23 132 views
0

这是music。它包含artiststitles。如果不止一位艺术家唱歌,艺术家之间用逗号隔开。我想建立一个搜索功能,使用户可以搜索一个艺术家,都是画家,没有艺术家和标题等php MySQL多词搜索

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没有结果显示。

+0

这与[你的其他问题有什么不同?](http://stackoverflow.com/q/26002251/) – 2014-09-23 21:05:26

+1

看看这个http://stackoverflow.com/questions/759580/how-to-implement- a-keyword-search-in-mysql – 2014-09-23 21:08:10

+1

它与多词搜索无关。 @ Fred-ii- – 2014-09-23 21:11:06

回答

2

对于那些有点搜索,您应该使用MATCH AGAINST

+1

喜欢这个? 针对('%$ search_value%')选择* from'music' match('title','artist')) 这给了我一个错误。 – 2014-09-23 21:18:15

+0

您必须将您的搜索值分解为单个搜索值。这不是你喜欢的模式。 – VMai 2014-09-23 21:27:49

+0

@rexhn您必须在表格中添加'FULLTEXT(标题,艺术家)',您必须重新制作或执行ALTER TABLE。阅读文档。 – Zerquix18 2014-09-23 21:33:39