我有一个名为“产品”的数据库和一个包含列的 FULLTEXT 索引:title
和description
. 我所有的产品都是润滑油(油),它有两种类型:工业和汽车,比率为55%-45%。如果我在 auto-moto oils 之后进行搜索,那么它将不会返回任何结果,因为“auto-moto”关键字出现在超过一半的行中,并且所有这些行中都存在油,因此 MySQL 将它们放入 STOPWORDS列表。
我正在使用 PHP。如何进行该查询以返回正确的结果?
我有一个名为“产品”的数据库和一个包含列的 FULLTEXT 索引:title
和description
. 我所有的产品都是润滑油(油),它有两种类型:工业和汽车,比率为55%-45%。如果我在 auto-moto oils 之后进行搜索,那么它将不会返回任何结果,因为“auto-moto”关键字出现在超过一半的行中,并且所有这些行中都存在油,因此 MySQL 将它们放入 STOPWORDS列表。
我正在使用 PHP。如何进行该查询以返回正确的结果?
答案是IN BOOLEAN MODE
。如果您使用布尔模式,那么 mysql 将忽略该键存在于超过 50% 的行中。同时它有一个非常强大和有用的能力:AGAINST ('*key*')
。
可能是因为 auto-moto 包含一个“-”字符,根据 http://dev.mysql.com/doc/refman/5.0/en/fulltext-boolean.html执行 NOT 搜索,所以所有带有“auto”的行” 但不是“摩托车”
尝试搜索“汽车摩托车”
您也可以发布您正在使用的实际 SQL,可能有助于诊断问题