但我找不到我的答案,所以问了这个问题,抱歉重复了。
我在 MySQL 中执行查询
记录是:
- 我是约翰·多伊。
- 约翰·多伊是个男人。
- 约翰姓氏是母鹿
像%john d%将匹配前两个结果,因为它们的顺序相同,而 wilds 将匹配记录中的任何位置但是在大型数据集中,这已经杀死了性能
所以我用谷歌搜索并发现MATCH AGAINST IN BOOLEAN MODE 作为替代方案。现在,我的搜索词是:john d 它试过了
AGAINST('"john d"')
AGAINST('john d*')
AGAINST('+john +d') etc
我只想得到相同顺序的结果。(例如 1. 我是 john doe。2. john doe 是男人)对于这个搜索词 john d 但我无法实现。 就像 %john d%给了我想要的,但它会扼杀性能。我怎样才能在 MySQL 中以快速的性能获得我想要的结果。
在可能重复:如何使用前缀通配符,如 '*abc' 与 match-against
@GolezTrol提供了一个解决方案来创建一个单独的列,他在其中反转字符串:
user_login user_login_rev
xyzabc cbazyx
然后,我们可以查找 'john d%' 而不是查找'%john d',如果该列被索引,这会更快。
但
@PeerBr请注意,如果您想从字符串中间查找内容,则反转字符串对您没有帮助。通过使用普通索引键入“Blue%”或使用倒置 inices反转“Blue%” ,您不会找到“Jimmy Blue Jones” 。
谢谢