gpt4 book ai didi

mysql 正则表达式使用别名进行搜索

转载 作者:行者123 更新时间:2023-11-29 14:44:29 26 4
gpt4 key购买 nike

我不太擅长正则表达式,所以我真的需要一些帮助来实现我的目标。
在数据库中搜索时,我使用特定关键字的别名。

这是一个例子

keyword  tets alias test   (someone have spell wrong then word test)
keyword b.m.w alias bmw (if someone write b.m.w instead of bmw)

等等

到目前为止,如果用户搜索“bmw 316”,我会使用LIKE“%bmw%316%”来获取结果。现在,如果用户搜索 "b.m.w 316" 我必须使用

"%b.m.w%316%" OR
"%bmw%316%"

因为b.m.w有别名bmw

对于 6 个单词和 2-3 个别名的情况,组合太多。
我正在尝试用正则表达式来实现它。
在上面的场景中,它会类似于 (bmw|b.m.w) 316

如何解决这个问题?

最佳答案

您不是在寻找REGEXP,您正在寻找一个东西 called levenshtein distance

MySQL 还没有对这个(美妙的)概念提供 native 支持,但您可以在此处下载 UDF:
http://joshdrew.com/
这里有一个列表,以便您可以选择:
http://blog.lolyco.com/sean/2008/08/27/damerau-levenshtein-algorithm-levenshtein-with-transpositions/

您还可以在 MySQL 中编写自己的函数,因此无需安装 UDF。
http://www.supermind.org/blog/927/working-mysql-5-1-levenshtein-stored-procedure

最后这个问题也可能对您有所帮助:
Implementation of Levenshtein distance for mysql/fuzzy search?

最接近匹配的查询类似于:

SELECT * FROM atable a ORDER BY levenshtein(a.field, '$search') ASC LIMIT 10

关于mysql 正则表达式使用别名进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7269819/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com