【发布时间】:2010-10-07 15:08:24
【问题描述】:
我有一个包含电影名称的表,我希望能够在该表中搜索电影。但我希望能够搜索部分标题,并且仍然返回结果。例如,如果有一条名为“量子安慰”的记录,那么我希望能够搜索“量子安慰”,甚至“007:量子安慰”,我想找到该记录。有没有办法做到这一点?
编辑 以及如何根据匹配进行排序?也就是最匹配的那一行,应该先返回。
【问题讨论】:
我有一个包含电影名称的表,我希望能够在该表中搜索电影。但我希望能够搜索部分标题,并且仍然返回结果。例如,如果有一条名为“量子安慰”的记录,那么我希望能够搜索“量子安慰”,甚至“007:量子安慰”,我想找到该记录。有没有办法做到这一点?
编辑 以及如何根据匹配进行排序?也就是最匹配的那一行,应该先返回。
【问题讨论】:
在布尔模式下使用MySQL Full Text Search。 如果您在搜索“007:quantum solace”时执行此操作,因为它在将显示的列中至少包含一个匹配结果,那么您可以按相关性排序。
SELECT *, MATCH(title) AGAINST ('quantum solace' IN BOOLEAN MODE) AS rank
FROM films
WHERE MATCH(title) AGAINST ('quantum solace' IN BOOLEAN MODE) ORDER BY rank DESC
【讨论】:
看看full text search capabilities of MySQL。设置全文索引后,您可以进行如下查询:
SELECT *
FROM movies
WHERE MATCH(title) AGAINST ('quantum solace' IN BOOLEAN MODE)
【讨论】: