Php 将网页关键字匹配到数据库中的一组关键字
在我的数据库中,我列出了5000行(作为关键字)。现在给定一篇文章(可能甚至1000个单词),我想匹配数据库中与关键字匹配的任何单词。例如,我将这些记录保存在db中(使用逗号提及行):Php 将网页关键字匹配到数据库中的一组关键字,php,algorithm,wordpress,solr,replace,Php,Algorithm,Wordpress,Solr,Replace,在我的数据库中,我列出了5000行(作为关键字)。现在给定一篇文章(可能甚至1000个单词),我想匹配数据库中与关键字匹配的任何单词。例如,我将这些记录保存在db中(使用逗号提及行): 电视、电视和视频、电影、恐怖电影、照相机、数码相机、佳能数码相机 每行有另一个名为“URL”的列。我的输入字符串可能如下所示: 我讨厌恐怖电影。佳能发布了一款新的数码相机。到目前为止,我拥有3台数码相机……” 从上面的字符串中,我需要匹配: 恐怖电影针对我存储的关键字恐怖电影。但我不希望只有电影与电影匹配,因为
电视、电视和视频、电影、恐怖电影、照相机、数码相机、佳能数码相机
每行有另一个名为“URL”的列。我的输入字符串可能如下所示:
我讨厌恐怖电影。佳能发布了一款新的数码相机。到目前为止,我拥有3台数码相机……”
从上面的字符串中,我需要匹配:
- 恐怖电影针对我存储的关键字恐怖电影。但我不希望只有电影与电影匹配,因为恐怖电影关键字在这里更合适李>
- 数码相机针对存储的关键字数码相机
- 数码相机…针对存储的关键字数码相机
提前感谢我认为你的问题实际上有几个部分,但我假设你基本上想向你的网站提交一篇文章,然后你的网站后端将处理这篇文章,并用粗体字体和url替换所有关键字 考虑到你想操纵你的文章并从数据库中注入数据,也许一个原始的php解决方案会适合你(但我必须承认我对Solr/Lucene不够熟悉,无法提供建议)。显然,您必须进行一些基准测试,但在这种类型的系统中,5000行数据并不是不合理的数据量,因为我假设您不会每隔几秒钟甚至几分钟提交一篇文章 因此您需要:
- 确定你的复数关键词是否超出了“s”后缀 (也就是说,你是否也在尝试匹配实际上 更改拼写,如“buddy”=>“buddies”)
- 从语法上讲,你准备/需要走多远 要或想要将数码相机之类的东西与数码相机匹配
编辑:当你提到识别关键词时,有点困惑,关键词不是已经在数据库中了吗?或者,您是否试图从提交的文章中有机地创建一个关键字数据库,这样您的系统将在搜索和替换数据库中当前存储的关键字的同时,获取您的文章中的关键字?hello@PedroFillastre,您认为str_replace()如何工作?你能详细说明一下吗?对于字符串替换,我需要确定我的关键字,这是我现在面临的最大挑战。你可以创建一个包含所有关键字和其他链接的数组,然后我将如何执行以下操作:1。把恐怖片和恐怖片配对。2.匹配恐怖电影,但不匹配电影?@HungryCoder检查是否在数组中???->史蒂夫H,谢谢你的意见。在完成当前任务一段时间后,我将解释并回答您的问题。我很感激你看了它。是的,你知道了主要的意思。然而,虽然最初我举了一个5000条记录的例子,但计数有可能增加。目前,我们看到的记录范围约为5万条。这就是普通PHP循环无法工作的原因。到目前为止,我已经完成了
preg_replace
的工作,它支持诸如“s,es”之类的复数形式,但不支持诸如“factory->factories”之类改变背景词的复数形式。此外,它不支持撇号。下面是我目前使用的表达式:~{$keyword}(s | es)*\b(?)((?)表达式跳过[aa][/aa],关于您的困惑:我在数据库中有关键字,但当一篇文章(比如博客文章)是我的输入时,我不知道应该从中找到什么关键字,除非我与数据库匹配