2024-06-16 14:53:54 发布
网友
我的数据库中有一个名称表,我希望对其进行模糊搜索,例如我的数据库包含:
Name ID John Smith 1 Edward Smith 2 Gabriel Gray 3 Paul Roberts 4
当我通过python搜索数据库时,我只能进行精确匹配搜索。但我希望能做模糊搜索,我可以搜索“史密斯”这个名字,并带回约翰·史密斯和爱德华·史密斯。在
import MySQLdb search_str = 'smith' conn = MySQLdb.connect(host="localhost", user="me",passwd="pw",db="mydb") c = conn.cursor() c.execute("SELECT name FROM mytable WHERE name LIKE %s", '%' + search_str + '%') c.fetchall() c.close() conn.close()
最简单的形式是使用LIKE比较:
LIKE
SELECT * FROM table WHERE name LIKE '%smith%';
更精细的搜索可以用全文索引(大量文本)、SOUNDEX()(处理英语单词,匹配其他语言是从“有点可行”到“糟糕”)来完成的,levenshtein单词距离等
SOUNDEX()
最简单的形式是使用
LIKE
比较:更精细的搜索可以用全文索引(大量文本)、
SOUNDEX()
(处理英语单词,匹配其他语言是从“有点可行”到“糟糕”)来完成的,levenshtein单词距离等相关问题 更多 >
编程相关推荐