首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现推荐系统?

如何实现推荐系统?
EN

Stack Overflow用户
提问于 2011-06-10 05:05:52
回答 3查看 22.6K关注 0票数 7

我有集体智能书,但我不知道它如何在实际中应用。

假设我有一个带有mySQL数据库的PHP网站。用户可以在数据库中插入标题和内容的文章。为了简单起见,我们只是比较标题。

  • 如何制作咖啡
  • 关于咖啡的15件事。
  • 大问题。
  • 如何削铅笔?
  • 被球击中的家伙

我们开的是“怎么做咖啡?”文章与第二、第四标题有相似之处,将在相关条款部分显示。

如何使用PHP和mySQL实现这一点?如果我必须使用Python,没关系。提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-10 05:11:57

在每个产品旁边存储一组关键字,这应该是标题中除一组止词之外的所有内容。当显示一个标题时,您会发现共享关键字的任何其他产品(与一个或多个具有相同优先级的产品)。

您可以根据每个关键字的稀缺性为其分配一个分数(例如,对“PHP”的匹配比“编程”上的匹配更重要),或者通过跟踪用户在一组产品之间手动导航的次数来提高这一点。

无论如何,你最好从简单的开始,然后在你继续的过程中加强它。取决于数据库的大小,更先进的技术可能不会那么有成效。

票数 12
EN

Stack Overflow用户

发布于 2011-06-10 05:20:27

最好是使用一组标记,当插入标题时,这些标记被解析并存储在db中,然后在此基础上进行查询。

但是,如果您必须解析标题,则基本上是执行类似的查询:

代码语言:javascript
复制
SELECT * FROM ENTRIES WHERE TITLE LIKE '%<keyword>%';

不过,要想得到更详细的答案:

代码语言:javascript
复制
// You need some test to see if the word is valid. 
// "is" should not be considered a valid match.
// This is a simple one based on length, a 
// "blacklist" would be better, but that's up to you.
function isValidEntry( $word )
{
    return strlen( $word ) >= 4;
}

//to hold all relevant search strings:
$terms = array();
$postTitleWords = explode( ' ' , strtolower( 'How to Make Coffee' ) );

for( $postTitleWords as $index => $word )
{
    if( isValidEntry( $word ) ) $terms[] = $word;
    else
    {
        $bef = @$postTitleWords[ $index - 1 ];
        if( $bef && !isValidEntry( $bef ) ) $terms[] = "$bef $word";
        $aft = @$postTitleWords[ $index + 1 ];
        if( $aft && !isValidEntry( $aft ) ) $terms[] = "$word $aft";
    }
}
$terms = array_unique( $terms );
if( !count( $terms ) ) 
{
    //This is a completely unique title!
}
$search = 'SELECT * FROM ENTRIES WHERE lower( TITLE ) LIKE \'%' . implode( '%\' OR lower( TITLE ) LIKE \'%' $terms ) . '\'%';
// either pump that through your mysql_search or PDO.
票数 5
EN

Stack Overflow用户

发布于 2017-12-06 05:48:33

这可以通过在SQL查询中使用通配符来实现。如果您有更大的文本,并且通配符似乎无法捕获文本的中间部分,那么检查其中一个的子字符串是否与另一个匹配。我希望这能帮到你。顺便说一句,您的题名询问如何实现推荐系统,而问题描述只是询问如何在数据库记录中匹配一个字段。推荐系统是一个广泛的研究课题,有许多有趣的算法(如协同过滤、基于内容的方法、矩阵分解、神经网络等)。如果您的项目达到这个规模,请随时探索这些高级主题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6302184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档