【问题标题】:coding inspiration needed - keywords contained within string需要编码灵感 - 字符串中包含的关键字
【发布时间】:2010-03-03 13:58:20
【问题描述】:

我有一个特殊的问题,需要知道解决它的最佳方法。

我有一个 php 字符串,它可以包含许多关键字(实际上是标签)。例如:-

“搜索引擎优化、广告词、谷歌”

“网页开发、社区建设、网页设计”

我想创建一个相关的关键字池,以便所有与 seo、在线营销相关的关键字或所有与 Web 开发相关的关键字。

我想根据这些关键字池检查关键字/标签字符串,如果关键字字符串中包含例如 seo 或 adwords,它会与用于在线营销的关键字池匹配,并提供特定的内容。

我想知道最好的编码方式。我猜测某种哈希表或数组,但不确定最好的方法。

有什么想法吗?

谢谢

乔纳森

【问题讨论】:

    标签: php tags hashtable keyword


    【解决方案1】:

    我想到了三种方法,但我相信可能还有更多。当然,在任何情况下,我都会将值存储在数据库表(或配置文件,或其他取决于您的应用程序)中,以便轻松编辑。

    1) 最简单:将列表转换为“keyword1|keyword2|keyword3”形式的正则表达式,并查看输入是否匹配。

    2) 中等:将单词添加到哈希表中,然后将输入拆分为单词(您可能必须使用正则表达式替换来删除标点符号)并尝试在哈希表中查找输入的每个单词。

    3) 最难:根据您的具体情况,这可能不起作用,但如果所有可能的内容都可以被搜索解决方案(例如 Apache SOLR)索引,那么您的关键字列表可以用作搜索字符串并且您可以返回高于特定相关级别的结果。

    如果不了解更多有关源数据的信息,很难确切知道哪种解决方案最有效。大量关键字可能会堵塞正则表达式,但如果它是一个简短的列表,那么它可能会很好用。如果您的输入很长,那么#2 将无法正常工作,因为您必须测试每个输入单词。与往常一样,您的里程可能会有所不同,所以我会从我认为可行的最简单的解决方案开始,看看性能是否可以接受。

    【讨论】:

    • 谢谢大卫,第一个(最简单的方法)会处理“seo”或“adwords”与在线营销池匹配的情况吗?
    • 我不明白为什么不这样做。如果您的在线营销关键字池是“seo、adwords、adsense”,您将构建一个正则表达式“seo|adwords|adsense”。如果您输入的关键字是“New SEO Thingamajig”,那将匹配正则表达式,“Google AdSense 很整洁”。
    • 嗨,大卫,再次感谢,正则表达式不是我的强项 - 请您提供一些关于如何在语法方面构建它的想法。
    • 抱歉,PHP 不是 我的 强项。检查stackoverflow.com/questions/2368608/…
    猜你喜欢
    • 1970-01-01
    • 2013-04-20
    • 2011-03-19
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    相关资源
    最近更新 更多