在数据库PHP/MySQL中找到类似的描述
我们正在构建一个帮助台应用程序来运行我们的服务公司,我正试图找出如何帮助呼叫中心人员根据客户的问题描述分配一个类别 我的主要想法是将客户提供的描述与之前的描述进行比较,并根据分配的最常见类别使用之前服务呼叫中使用的类别 有什么办法吗 “我的描述”字段是一个blob字段,因为有些描述相当长。我更愿意找到一种需要最少系统资源的方法来实现这一点 感谢您的任何意见:)在数据库PHP/MySQL中找到类似的描述,php,mysql,Php,Mysql,我们正在构建一个帮助台应用程序来运行我们的服务公司,我正试图找出如何帮助呼叫中心人员根据客户的问题描述分配一个类别 我的主要想法是将客户提供的描述与之前的描述进行比较,并根据分配的最常见类别使用之前服务呼叫中使用的类别 有什么办法吗 “我的描述”字段是一个blob字段,因为有些描述相当长。我更愿意找到一种需要最少系统资源的方法来实现这一点 感谢您的任何意见:) 迈克我是一个自定义代码的人;我觉得如果你使用大的、臃肿的系统,这项工作就做得不对,所以如果你不想自己编写代码的话,请对此持保留态度。然而
迈克我是一个自定义代码的人;我觉得如果你使用大的、臃肿的系统,这项工作就做得不对,所以如果你不想自己编写代码的话,请对此持保留态度。然而,这可能不像你做的那么难;是的,我肯定会使用标签系统。然而,它不必如此复杂 以下是我将如何处理它: 首先,建立一个包含3个表的数据库;一个用于类别、标记和“链接”(类别和标记之间的链接) 然后,创建一个PHP函数来初始化一个数组(空就可以了),如果不存在新的(小写的)单词,则推送它们。这方面的一个例子可能是:
<?php
// Pass the new description to this
// function.
function getCategory($description)
{
// Lowercase it all
$description = strtolower($description);
// Kill extra whitespace
$description = trim($description);
$description = preg_replace('~\s\s+~', ' ', $description);
// Kill anything that isn't a number or a letter
// NOTE: This is untested, so just edit this however you'd like to make it work. The
// idea is to just eliminate everything that isn't a letter or number. Just don't take out
// spaces; we need them!
$descripton = trim($description, "!@#$%^&*()_+-=[]{};:'\"\\\n\r|<>?,./");
// Now the description should just contain words with a single space in between them.
// Let's break them up.
$dict = explode(" ", $description);
// And find the unique ones...
$dict = array_unique($dict, SORT_STRING);
// If you wanted to, you could trim either common words you specify,
// or any words under, say, 4 characters. Up to you!
return $dict;
}
?>
通过使用MySQL InnoDB关系,links表不会因为创建行而占用更多空间;这是因为它们在某种程度上是链接的,并且都是通过引用存储的。这将大大减少数据库的大小
现在,对于kicker来说,有一个聪明的mysql数据库查询,它遵循以下步骤:
如果你想得到更详细的信息,你可以在分类和标签之间插入重复的链接来创建一种加权标签系统,这将使你的系统更加准确;我觉得如果你使用大的、臃肿的系统,这项工作就做得不对,所以如果你不想自己编写代码的话,请对此持保留态度。然而,这可能不像你做的那么难;是的,我肯定会使用标签系统。然而,它不必如此复杂 以下是我将如何处理它: 首先,建立一个包含3个表的数据库;一个用于类别、标记和“链接”(类别和标记之间的链接) 然后,创建一个PHP函数来初始化一个数组(空就可以了),如果不存在新的(小写的)单词,则推送它们。这方面的一个例子可能是:
<?php
// Pass the new description to this
// function.
function getCategory($description)
{
// Lowercase it all
$description = strtolower($description);
// Kill extra whitespace
$description = trim($description);
$description = preg_replace('~\s\s+~', ' ', $description);
// Kill anything that isn't a number or a letter
// NOTE: This is untested, so just edit this however you'd like to make it work. The
// idea is to just eliminate everything that isn't a letter or number. Just don't take out
// spaces; we need them!
$descripton = trim($description, "!@#$%^&*()_+-=[]{};:'\"\\\n\r|<>?,./");
// Now the description should just contain words with a single space in between them.
// Let's break them up.
$dict = explode(" ", $description);
// And find the unique ones...
$dict = array_unique($dict, SORT_STRING);
// If you wanted to, you could trim either common words you specify,
// or any words under, say, 4 characters. Up to you!
return $dict;
}
?>
通过使用MySQL InnoDB关系,links表不会因为创建行而占用更多空间;这是因为它们在某种程度上是链接的,并且都是通过引用存储的。这将大大减少数据库的大小
现在,对于kicker来说,有一个聪明的mysql数据库查询,它遵循以下步骤:
如果你想得到更详细的信息,你可以在类别和标签之间插入重复链接,以创建一种加权标签系统,这将使你的系统更加准确。好,所以基本上只需将标签分配给类别,然后将描述中的标签计数与标签的类别计数进行比较。也就是说,如果描述中有标签(吃、肉、毛皮),那么最有可能的是(食物),因为它与这两个词“相关”,但可能与动物有第二次匹配。差不多。这就是我要做的!好的,基本上只需将标记分配给类别,然后将描述中的标记计数与标记的类别计数进行比较。也就是说,如果描述中有标签(吃、肉、毛皮),那么最有可能的是(食物),因为它与这两个词“相关”,但可能与动物有第二次匹配。差不多。这就是我要做的!