Pyspark Dataframe 中的模糊搜索

xuo3flqw  于 2022-11-01  发布在  Spark
关注(0)|答案(1)|浏览(231)

我有一个很大的csv文件(超过9600万行)和7列。我想对其中一列进行模糊搜索,并检索与输入字符串相似度最高的记录。该文件由spark管理,我通过pyspark将其加载到某个 Dataframe 中。现在我想使用类似fuzzywuzzy的东西来提取匹配度最高的行。
但是fuzzywuzzy函数extract返回了一些我无法处理的东西:
[(Column<'lowercase'>, 44)]
结果:[(Column<'lowercase'>, 44)]
df是pyspark Dataframe (使用spark.read.csv加载),我想搜索的列是“小写”,我想检索各行的所有其他列加上相似性得分。
有什么建议吗?

mrfwxfqh

mrfwxfqh1#

你可以尝试使用其他的python库,比如Rapidfuzz,它会以输入字符串和字符串列表作为输入来计算模糊字符串匹配,你可以选择你想要的字符串匹配算法来计算合适的匹配。
代码如下所示:


# pip install rapidfuzz

from rapidfuzz import fuzz, process

input_string = 'appel'
query_list = df.lowercase.values

results = process.extract(input_string, query_list, scorer=fuzz.token_ratio, limit=1)

# output format = [('string1', confidence_score, index_in_list), ...]

相关问题