我有一个包含1/2万个短语的表,我正在使用此查询进行单词匹配:
SELECT * FROM `searchIndex` WHERE `indexData` RLIKE '[[:<:]]Hirt'
Run Code Online (Sandbox Code Playgroud)
indexData字段具有FULLTEXT索引,并且是数据类型longtext.
我希望匹配像这样的项目
"Alois M. Hirt"
"Show Biz - Al Hirt,担任新角色,......"
"Al Hirt的Sinatraville打开9 p ..."
"Hirt会玩......"
而不是"衬衫"或"十三"或"三十"等
查询是成功的,但它经常需要3秒才能返回,我想知道是否有更好,更有效的方法来进行这种单词边界匹配?
如果我要为indexData添加另一个索引,那么使用的键长是多少?
TIA
无需拥有FULLTEXT索引.MySQL具有字边界的特殊标记.来自MySQL文档:
[[:<:]], [[:>:]]
Run Code Online (Sandbox Code Playgroud)
这些标记代表字边界.它们分别匹配单词的开头和结尾.单词是一系列单词字符,其前面或后面没有单词字符.单词字符是alnum类中的字母数字字符或下划线(_).
mysql> SELECT 'a word a' REGEXP '[[:<:]]word[[:>:]]'; -> 1
mysql> SELECT 'a xword a' REGEXP '[[:<:]]word[[:>:]]'; -> 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2997 次 |
| 最近记录: |