【问题标题】:word likeness/similarity in mysqlmysql中的单词相似度/相似度
【发布时间】:2011-03-21 20:42:38
【问题描述】:

我有一列包含电影的类型(最多三个由斜线分隔的说明符),例如“喜剧/浪漫/冒险”。在 mysql 或 php 中是否有一个函数或类似的东西可以让我获取电影的类型并将其与其他行的其他类型进行比较并按相似度排列它们?例如,拥有一部包含“喜剧/浪漫/冒险”的电影将首先返回所有这三种类型的电影,然后是其中两种类型的电影,最后可能是其中一种类型的电影。

【问题讨论】:

  • 您可以对表格进行规范化吗?那么你可以这样排序..
  • 请重新规范化。这不是一个好的设计。

标签: php mysql full-text-search


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我还建议使用像 SphinxApache Solr 这样的全文索引来进行相关性搜索。

    关于这个主题有很多relatedposts

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-25
      • 2017-06-07
      • 2016-07-09
      • 2019-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多