我有一个包含电影类型的列(最多三个由斜杠分隔的说明符),例如“喜剧/浪漫/冒险”。在mysql或php中是否有一个函数或类似的东西可以让我拍摄电影的类型并将其与其他行的其他类型进行比较并通过相似的方式进行排列?例如,制作一部带有“喜剧/浪漫/冒险”的电影将首先返回三部电影,然后是其中两部电影的电影,最后是其中一部电影的电影。
答案 0 :(得分:3)
如果您在流派列上启用full-text indexing,则可以执行此操作。我建议使用像sphinx这样的外部全文搜索引擎来处理这个问题,因为MySQL的内置全文索引确实不是很好。
您首先要在流派字段
上设置全文索引 ALTER TABLE movies ADD FULLTEXT INDEX (genre);
然后你可以这样选择:
SELECT *, MATCH(genre) AGAINST ('comedy romance adventure') AS relevancy FROM movies ORDER BY relevancy DESC;
答案 1 :(得分:0)
我还建议使用Sphinx或Apache Solr这样的全文索引进行相关性搜索。