【问题标题】:match against not making sense匹配没有意义
【发布时间】:2014-02-10 11:32:59
【问题描述】:

这是我的过滤器文本:

奥利弗旧书

如果我搜索“Oliver”,它会起作用,如果我搜索“book”,它会起作用,但如果我搜索“used”,它就不起作用。

暖风机HEOP1322

Heater -> works : white -> works : fan -> does not work : HEOP -> does not work : HEOP1322 -> works.

我的查询是这样的:

SELECT * FROM table WHERE MATCH(filter) AGAINST ('fan' IN BOOLEAN MODE)
SELECT * FROM table WHERE MATCH(filter) AGAINST ('HEOP' IN BOOLEAN MODE)
SELECT * FROM table WHERE MATCH(filter) AGAINST ('used' IN BOOLEAN MODE)

为什么used这个词不起作用而book这个词起作用?它们的长度相同。

我也尝试了这个建议Mysql search for string and number using MATCH() AGAINST(),但没有成功。

编辑:已解决,请按照此说明操作。 XAMPP MySQL - Setting ft_min_word_len

【问题讨论】:

  • 从标题中删除 PHP。您的问题与 PHP 无关
  • fancyPants 帮我做了。对不起。

标签: mysql match


【解决方案1】:

“used”是默认的 MySQL 全文停用词之一:https://dev.mysql.com/doc/refman/5.1/en/fulltext-stopwords.html。停用词是被忽略的词,因为它们在(英语)语言中过于频繁,不会对全文搜索的结果产生积极影响。如果您只查询单个词,LIKE %..% 查询可能比完整的全文搜索更适合。

【讨论】:

  • 好的,这回答了一个问题。我还读到最小长度是 4,要忽略它,我应该在单词前使用 +。 +fan 继续不工作。
猜你喜欢
  • 1970-01-01
  • 2021-11-08
  • 2013-10-22
  • 2017-07-16
  • 1970-01-01
  • 1970-01-01
  • 2011-11-24
  • 2018-06-20
  • 2012-02-15
相关资源
最近更新 更多