【发布时间】:2017-04-27 00:46:53
【问题描述】:
可能重复:How to use prefix wildcards like '*abc' with match-against
但我找不到我的答案,所以问了这个问题,抱歉重复了。
我正在 MySQL 中执行查询
记录是:
- 我是 john doe。
- John doe 是个男人。
- 约翰姓氏是母鹿
like %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 但我无法实现。 like %john d% 给了我想要的,但它扼杀了性能。 我怎样才能在 MySQL 中以快速的性能获得我想要的结果。
可能重复:How to use prefix wildcards like '*abc' with match-against
@GolezTrol 提供了一个解决方案来创建一个单独的列,他在其中反转字符串:
user_login user_login_rev
xyzabc cbazyx
然后,我们可以查找 'john d%',而不是查找 '%john d',如果对列进行索引,这会更快。
但是
@PeerBr 请注意,如果您想从字符串中间查找内容,则反转字符串对您没有帮助。使用普通索引键入 'Blue%' 或使用倒置 inices 倒置 'Blue%' 都不会找到 "Jimmy Blue Jones" .
谢谢
【问题讨论】:
标签: php mysql solr sql-like match-against