Mysql的全文索引fullText 全文匹配问题

至尊_宝 2013-05-27 11:32:27
有个Attendee表,表中有emailAddress列,为此列加了一个fullText索引,
假如有个列数据为"alexli@hybing.com"的数据,
我想使用此表全文索引进行查找结果要求与 like '%alexli@hybing.com%'结果类似 ,
使用
SELECT * FROM AttendeeTest as at where match(emailAddress) against('alexli@hybing.com' IN BOOLEAN MODE),如果是这样的话, 查询结果有很多,比如类似"aaabbb@hybing.com"都能查出来,
如果使用
SELECT * FROM AttendeeTest as at where match(emailAddress) against('"alexli@hybing.com"' IN BOOLEAN MODE),只能查出"alexli@hybing.com"这个数据,查不出"xxxalexli@hybing.comxxx"数据,
求解.
...全文
432 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
rucypli 2013-05-27
  • 打赏
  • 举报
回复
这个没办法改变内部匹配度算法 这个出来多少数据 需要多少秒 SELECT count(*) FROM AttendeeTest as at where match(firstName,lastName,emailAddress) against('alexli@hyzing.com' IN BOOLEAN MODE)
至尊_宝 2013-05-27
  • 打赏
  • 举报
回复
第一种不行,使用"alexli@hyzing.com"来查询,看得出有比他更高的,而且这个还不是我需要的,第二个方式,在结果上再like,如下:
select * from (SELECT * FROM AttendeeTest as at where match(firstName,lastName,emailAddress) against('alexli@hyzing.com' IN BOOLEAN MODE)) as a where CONCAT(a.lastName,a.firstName,a.lastName,a.emailAddress) like '%alexli@hyzing.com%'
115万的数据,使用了155秒,效率不行
rucypli 2013-05-27
  • 打赏
  • 举报
回复
或者就在你原有结果上 在like模糊匹配一下
rucypli 2013-05-27
  • 打赏
  • 举报
回复
按照相似度 取大于某个相似度的 mysql> SELECT id, MATCH (title,body) AGAINST ('Tutorial') -> FROM articles; +----+-----------------------------------------+ | id | MATCH (title,body) AGAINST ('Tutorial') | +----+-----------------------------------------+ | 1 | 0.65545833110809 | | 2 | 0 | | 3 | 0.66266459226608 | | 4 | 0 | | 5 | 0 | | 6 | 0 | +----+-----------------------------------------+
至尊_宝 2013-05-27
  • 打赏
  • 举报
回复

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧