【问题标题】:find tags from database with some similarity between them从数据库中找到它们之间有一些相似性的标签
【发布时间】:2015-01-09 06:31:34
【问题描述】:

我想用

从数据库中的可用标签中找到标签(或说主标签)

表:标签 => 列:标签 ID、客户 ID、标签

  • 如何从“标签”列中找到相同的标签
  • 以及如何为所有这些标签赋予概率(或权重)以找到主要标签。

我从事 php 工作并设计一个包含标签搜索方法的网站,用户可以将标签添加为任何形式,例如两个相似的 #awesome 和 #awsm 。

【问题讨论】:

    标签: php database tags


    【解决方案1】:

    您可以根据用户类型从数据库中查找标签

    $tags = $_POST['tag'];
    
    $sql = 'SELECT * from tag WHERE tag = '%".$tags."%' ';
    

    【讨论】:

    • 不,实际上我想通过标签的相似性来找出标签的含义。它们之间的相似之处
    【解决方案2】:

    取决于你所说的相似性是什么意思。如果只是abc123abc_ok 相似,那么没有问题。如果您希望 abcadbc 相似,那么您的处境会更糟,因为您必须为 PHP 编写逻辑来理解您对相似性的看法。

    简单的方法有sql查询:

    $sql = "SELECT * FROM tag WHERE tag LIKE '%".$tag."%'";

    这将选择每条记录,其中tag 字段包含$tag 值。

    【讨论】:

    • 这里我提到了#awsm 和#awesome,两者的含义相似。所以我想找出这些类型的标签,它们的概率具有相似的含义。(根据标签中有多少字母匹配或其他最佳算法(如果可用))
    • 上次检查时,计算机无法理解单词的含义。从计算机的角度来看,这些标签彼此之间没有任何相似之处。
    • 如果有算法可以找出某个点的相似度
    • 那你需要自己写。但要做到这一点,您需要从数据库中选择所有标签,并为每个标签运行您的算法,将其与输入进行比较。我很确定没有严肃的网站会这样做。我认为他们很可能已经准备好了几组类似的字符串。例如Google -> [gogle,goglee,gogl,googl,goggle] 或类似的集合。
    猜你喜欢
    • 2013-02-23
    • 1970-01-01
    • 2017-06-03
    • 2017-12-08
    • 2016-12-02
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多