【问题标题】:MySQL full-text stopwords problemMySQL全文停用词问题
【发布时间】:2011-05-25 20:48:26
【问题描述】:

我有一个名为“products”的数据库和一个包含以下列的 FULLTEXT 索引:titledescription。我所有的产品都是润滑油(油),它有两种类型:工业和汽车,比率为55%-45%。 如果我在 auto-moto oils 之后进行搜索,那么它将不会返回任何结果,因为“auto-moto”关键字出现在超过一半的行中,并且所有这些行中都存在油,因此 MySQL 将它们放入 STOPWORDS列表。

我正在使用 PHP。如何进行查询以返回正确的结果?

【问题讨论】:

  • 您有权访问服务器配置吗?您应该能够设置自定义停用词列表。
  • @nico 在这种情况下无济于事:由于出现频率,该词会自动添加到停用词列表中
  • @Pekka:啊,好吧,我不知道如果你指定了自定义停用词列表也会发生这种情况。

标签: mysql full-text-search stop-words


【解决方案1】:

可能是因为 auto-moto 包含一个“-”字符,根据 http://dev.mysql.com/doc/refman/5.0/en/fulltext-boolean.html 执行 NOT 搜索, 所以所有带有“auto”但不是“moto”的行

尝试搜索“汽车摩托车”

您也可以发布您正在使用的实际 SQL,可能有助于诊断问题

【讨论】:

    【解决方案2】:

    答案是IN BOOLEAN MODE。如果您使用布尔模式,那么 mysql 将忽略该键存在于超过 50% 的行中。同时它有一个非常强大和有用的能力:AGAINST ('*key*')

    【讨论】:

      猜你喜欢
      • 2011-06-18
      • 2011-01-20
      • 2011-07-04
      • 2012-03-22
      • 2012-09-22
      • 1970-01-01
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      相关资源
      最近更新 更多