【问题标题】:related rows mysql query相关行mysql查询
【发布时间】:2011-02-28 22:56:59
【问题描述】:

我需要从与刚刚添加的新行相关的表中选择 5 行。

当用户发布新广告时,我在广告网站上工作,我想链接与此广告相关的 5 个广告。

条件是在数据库中存储的其他广告的标题中搜索单词列表(从刚刚添加的新广告的标题中提取)。

这是一种在MySQL中使用正则表达式来验证单个广告标题中的多个需求。

谁能帮我建立 MySQL 查询来得到这个结果

例如:

新广告的标题:“销售新的安卓智能手机” 提取的世界:“android”和“smartphone”

一些广告:

1 - “搜索再见新智能手机”

2 - “销售安卓产品”

3 - “新智能手机”

4 - “好车”

6 - ",nwx wxclkn wxc "

查询应该返回 1,2,3 广告的 id。

【问题讨论】:

  • 另外,您的帖子可能需要更多说明。很难说你在问什么。
  • 您希望我们帮助您重塑 Google AdWords?这里有一个提示:我很确定他们不使用 MySQL or 正则表达式。但我有理由确定网络以某种方式参与其中。
  • @JohnFx 根本不是为了重塑 Google AdWords

标签: php mysql regex


【解决方案1】:

最简单的方法是将标签与每个广告关联,这样您就可以通过标签本身关联广告。您不能只依赖标题,例如“销售手机”将与您的示例相关,即使它没有任何共同词。

然后,您将检索与广告关联的标签并查找具有相同标签的其他广告,并按匹配标签的数量对结果进行排序。

【讨论】:

    【解决方案2】:

    感谢您的回答

    我找到了一种解决方案,无需在广告中添加标签,我只需从新添加的添加中提取所需的单词,然后创建 mysql 正则表达式,如

    提取词:“android”“smartphone”

    SQL:

    SELECT * FROM ad_table WHERE title REGEXP '[[:<:]]android[[:>:]]|[[:<:]]smartphone[[:>:]]'

    【讨论】:

    • 同义词呢? cellphonephonesmarthphone。而且,例如,Android 可能被认为与iPhone 相关。如果你想让它起作用,你真的需要一些标签系统,你在广告标题中没有足够的词来依赖它。另外,REGEXP 选项要慢得多……
    猜你喜欢
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-02
    相关资源
    最近更新 更多