【问题标题】:Fast check if strings contain specific words快速检查字符串是否包含特定单词
【发布时间】:2015-07-06 07:08:18
【问题描述】:

我在数据库中有一堆字符串,我希望在其上使用某种数据结构,而不是执行 SQL “WHERE 'a b' LIKE 'a%'” 类型的搜索。

(在现实世界的例子中,这些可能高达 5000)
A - 假设我有字/针:for, in, like, release
注意:这些总是一样的,这里唯一可能发生的就是扩展,但它们不会改变

(在现实世界的例子中,这些可能高达 50)
B - 然后我有其他词/干草堆:for people, in magazine, date of release, daily news
注意:这些是动态的,它们总是不同的

我想知道一种从 B 中查找/删除所有单词的好方法,这些单词以 A 中的任何单词开头或结尾

所以我将从示例中删除的内容是:for people, in magazine, date of release

我很高兴有一个通用的想法,我可以在 PHP 中实现

PS:如果所有给定的想法都比较慢,我可能会回到 mysql,然后使用 mysql LIKE 搜索,所以我更喜欢更快的东西,或者至少和 mysql 一样快

【问题讨论】:

    标签: php string search find compare


    【解决方案1】:

    我能想到的一个解决方案是将单词从 B
    for, people, in, magazine, date, of, release

    标记A中存在的那些
    for, in, release

    这样我们最终会得到小得多的数据,只需在 foreach 循环中对它们执行 strpos 就可以了

    如果你知道更好的方法,请告诉我。

    【讨论】:

      猜你喜欢
      • 2013-12-23
      • 1970-01-01
      • 2011-05-20
      • 2023-04-01
      • 1970-01-01
      相关资源
      最近更新 更多