2012-12-27 45 views
1

我有我的表如下MySQL的 - 搜索确切的词匹配和排序

最佳莱昂纳多·迪卡普里奥电影

最佳塞缪尔·杰克逊电影

最佳爱德华·诺顿电影

动画电影

印度电影

印度食谱

印度市场

电影

我想搜索 “印度电影” 的结果应该是像

印度电影

印度食谱 Indi一个市场

电影 最佳莱昂纳多·迪卡普里奥电影

最佳塞缪尔·杰克逊电影

最佳爱德华·诺顿电影

动画电影

我该如何为此编写SQL查询。

+1

搜索'全文搜索' –

+0

你试过了什么? –

回答

-1

需要分割字符串...

$raw_results = mysql_query("SELECT * FROM movie WHERE `title` LIKE '%".$query."%' OR `title` LIKE '%".$query1."%'") or die(mysql_error()); 

// movie is the name of our table 

// '%$query%' and '%$query1%' is what we're looking for, % means anything, for example if $query is Indian Movies 
// it will match "Indian Movies", "Indian Recipes Indian Market", "Movies Best Leonardo DiCaprio Movies", if you want exact match use `title`='$query' 
+0

也想排序结果 – Ayyappadhas

+0

其简单的@Ayyappadhas你只需添加“ORDER BY标题DESC”在最后它会按降序排列,并将其保留为升序(默认) –

+0

但它只是一个按字母顺序排序。我想首先用“印度电影”显示结果,然后用“印度”结果与“电影”等结果。 – Ayyappadhas

1

这里需要使用全文索引搜索。

但是全文搜索仅支持MyISAM表。

添加FULLTEXT指数将您的列,然后用下面的查询:

查询:

SELECT * FROM table_name 
WHERE MATCH (column_name) 
AGAINST ('Indian Movies' IN BOOLEAN MODE) 

结果:

印度电影
印度食谱印度市场
电影最佳莱昂纳多·迪卡普里奥电影
最佳塞缪尔·杰克逊电影
最佳爱德华·诺顿电影
动画电影

+0

您可能想提及如何_“将'FULLTEXT'索引添加到您的列”_(而不是别人只是编辑它) – Cerbrus