mysql中的词相似性/相似性

问题描述:

我有一列包含电影的风格(最多三个以斜杠分隔的说明符),如“喜剧/浪漫/冒险”。在mysql或php中是否有一个函数或类似的东西可以让我采用电影的流派,并将它与其他行的其他流派进行比较并按照相似性排列它们?例如,制作一部有“喜剧/浪漫/冒险”影片的电影,首先会有三部电影,其次是带有其中两部电影的电影,最后是可能有其中一种风格的电影。mysql中的词相似性/相似性

+2

你可能规范化表格吗?那么你可以这样排序.. – konsolenfreddy 2011-03-21 20:46:31

+0

请重新正常化。这不是一个好的设计。 – Randy 2011-03-21 21:04:46

如果在流派列上启用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; 

我d还建议使用SphinxApache Solr等全文索引进行相关性搜索。

关于这个问题有一些relatedposts