mysql string match_Mysql使用MATCH()AGAINST()搜索字符串和数字

如果您需要菲亚特和500任何地方订单无关紧要,那么

SELECT * FROM models MATCH(name) AGAINST('+Fiat +500');

如果你需要菲亚特500,那么

SELECT * FROM models MATCH(name) AGAINST('+"Fiat 500"');

如果你需要菲亚特和零或更多500,那么

SELECT * FROM models MATCH(name) AGAINST('+Fiat 500');

如果您需要500和零或更多菲亚特,那么

SELECT * FROM models MATCH(name) AGAINST('Fiat +500');

试试看 !!!

更新2013-01-28 18:28 EDT

以下是FULLTEXT搜索的默认设置

mysql> show variables like 'ft%';

+--------------------------+----------------+

| Variable_name | Value |

+--------------------------+----------------+

| ft_boolean_syntax | + ->

| ft_max_word_len | 84 |

| ft_min_word_len | 4 |

| ft_query_expansion_limit | 20 |

| ft_stopword_file | (built-in) |

+--------------------------+----------------+

5 rows in set (0.00 sec)

mysql>

请注意,ft_min_word_len默认为4.令牌500的长度为3.因此它根本不会被索引.你将不得不做三(3)件事:

步骤01:配置较小的字符串标记

将其添加到/etc/my.cnf

[mysqld]

ft_min_word_len = 1

步骤02:重启mysql

service mysql restart

步骤03:重新索引模型表中的所有索引

您可以删除并添加FULLTEXT索引

或分阶段进行,看看它会提前有多大

CREATE TABLE models_new LIKE models;

ALTER TABLE models_new DROP INDEX name;

ALTER TABLE models_new ADD FULLTEXT name (name);

ALTER TABLE models_new DISABLE KEYS;

INSERT INTO models_new SELECT * FROM models;

ALTER TABLE models_new ENABLE KEYS;

ALTER TABLE models RENAME models_old;

ALTER TABLE models_new RENAME models;

当你满意这个工作,然后运行

DROP TABLE models_old;

试试看 !!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值