【问题标题】:look for several word in a sentence找几个词造句
【发布时间】:2018-05-07 07:58:53
【问题描述】:

我希望为我的网站制作一个搜索工具,其中包含几门课程。

我基本上是想打一个词,如果有这个词,我们当然会在所有页面中查找,然后根据该词出现的次数对页面进行分类。

所以我创建了一个 SQL 表,其中包含“coursnumero”、“textcours”、“liencours”,并且在课程文本中我有相关课程的所有文本。

我有:

SELECT count(*) FROM `cours` WHERE `textcours` like '%super%' groupby `coursnumero`

它显示 1,但我的句子中有 2 个单词“super”,我该如何解决这个问题?

【问题讨论】:

  • Ty :) 我会看看这个,我搜索了很多例子,但从来没有见过他,ty :) 抱歉重复发帖:/
  • 这不是搜索引擎的构建方式,它不会扩展,它会给您的系统带来巨大的负担。相反,您要么使用具有自己数据库的单独搜索引擎,要么维护单独的搜索表,在其中存储所有引用原始条目的单词。这样你就完全不需要昂贵的 LIKE 操作符了。
  • ty 给你的建议,它只是一个本地网站,里面没有那么多课程,这就是为什么我只是搜索一个解决方案,我不打算优化它:)

标签: php sql select


【解决方案1】:

我想这会对你有所帮助

SELECT count(*) FROM `cours` WHERE `textcours` LIKE 'super' OR `textcours` like '%,super' OR `textcours` like 'super,%' groupby `coursnumero`

【讨论】:

    【解决方案2】:

    这有点棘手。对于您的特定情况,您可以使用:

    SELECT COUNT(*) as numrows,
           SUM( LENGTH(REPLACE(textcours, 'super', 'superx')) - LENGTH(textcours)) as nummatches
    FROM cours c
    WHERE textcours like '%super%'
    GROUP BY coursnumero;
    

    长度的差异计算“超级”的出现次数。

    【讨论】:

    • 我帖子中的评论给了我解决方案,但是 :)
    猜你喜欢
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 2020-06-21
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多