将网页关键字与数据库中的一组关键字相匹配

时间:2012-05-15 08:24:14

标签: php algorithm wordpress solr replace

在我的数据库中我列出了5000行(作为关键字)。现在给一篇文章(甚至可能是1000个单词),我希望匹配任何与数据库中的关键字匹配的单词。例如,我在db中有这些记录(使用逗号提到行): tv, tv and videos, movie, horror movie, camera, digital camera, canon digital camera

每一行都有另一个名为“URL”的列。我的输入字符串可能是:

  

我讨厌恐怖电影。佳能发布了一款新的数码相机。到目前为止,我拥有3台数码相机......'

从上面的字符串中,我需要匹配:

  • 恐怖电影针对我存储的关键字恐怖电影。但我不希望只有 电影 电影匹配,因为恐怖电影关键字更合适。
  • 数码相机针对存储的关键字数码相机
  • 数码相机...... 针对存储的关键字数码相机

(文章中存在粗体短语,斜体短语存在于数据库中)

迭代数据库中的每个关键字可能是不可能的,也是不切实际的。到目前为止,我已经学会了索尔可能是一个合适的人。但我不确定我将如何索引&查询Solr。为了查询Solr,我要提供关键字。但我不知道我的关键词是什么。我只知道整篇文章。关键字可以包含1个或多个单词。完全随机,但我可以说最多5个字。

匹配后,我需要将文章中的关键字替换为下一列的(URL)值。例如,文章恐怖电影中的关键字需要替换为恐怖电影的网址列。

任何人都可以用正确的道路启发我吗?任何帮助表示赞赏。

提前致谢

1 个答案:

答案 0 :(得分:1)

我认为您的问题实际上有一些部分,但我假设您基本上想要向您的网站提交一篇文章,然后您的网站后端将处理本文的过程并用粗体字和网址替换所有关键字?

鉴于你想操纵你的文章并从你的数据库中注入数据,也许原始的php解决方案符合要求(但我必须承认我对Solr / Lucene提供建议不够熟悉)。您显然必须进行一些基准测试,但是5000行数据并不是在这类系统中处理的无理数据量,因为我假设您不会每隔几秒甚至几分钟提交文章?

因此您需要:

  1. 立即从您的数据库中选择所有'关键字',包括您的网址(存储在内存中以处理文章)。
  2. 将您的关键字数据转换(如果需要)到多维关联数组中(如果您的数据库查询尚未执行此操作,将更容易处理)。
  3. 在其他数组中建立您的复数变体,或者,如果它们在数据库的附加列中的关键字与关键字不同,则可以。)
  4. 当您提交文章时,您必须(以某种方式)循环遍历所有5000个关键字(包括所有复数变体的附加循环),在整篇文章中搜索所述关键字。
  5. 如果在您的文章中找到任何关键字,您显然需要用粗体字和匹配的网址替换这些匹配。
  6. 然后,一旦处理完文章中的所有关键字,您显然需要保存或向用户显示此文章吗?
  7. 关键字的另外两点是:

    • 确定您的复数关键字是否超出了's'后缀 (即你是否也试图匹配实际上的复数词 更改拼写,'buddy'=> '伙伴')?
    • 在语法上,你需要准备/需要走多远? 想要将数码相机等产品与数码相机相匹配?

    对于相当长的啰嗦/含糊不清的答案感到抱歉,但我认为在寻找解决方案之前了解项目的全部范围非常重要。你可能已经有了这些细节,但从你的问题我认为有太多的变量来提供完整的答案。如果您需要,我很乐意为上述任何一点提供一些代码示例/进一步解释?

    编辑:在您引用识别关键字时,有点困惑,不是数据库中已有字词的关键字?或者您是否尝试从提交的文章中有机地创建关键字数据库,因此您的系统将收集关键字的文章,同时还搜索和替换数据库中当前存储的关键字?