我的要求类似于: LINK
我需要列表中的LIKE类型匹配,而不是直接匹配。即 LIKE 与列表
匹配评论ID,COMMENTS
1,bad is he
2,hell thats good
3,sick !thats hell
4,That was good
List = ('good','horrible','hell')
我想获得像
这样的输出 ID, COMMENTS,MATCHED_WORD,NUM_OF_MATCHES
1,bad is he,,
2,hell thats good,(hell,good),2
3,sick !thats hell,hell,1
4,That was good,good,1
简单来说,我需要:(就像我所知,rlike isn匹配列表中的值而不是预期一个字符串)
file.select($"COMMENTS",$"ID").filter($"COMMENTS".rlike(List_ :_*)).show()
我尝试了isin,它可以工作但只匹配整个单词。
file.select($"COMMENTS",$"ID").filter($"COMMENTS".isin(List_ :_*)).show()
当我尝试了大量的搜索时,请帮助或请将任何链接重新指向我!
答案 0 :(得分:1)
用简单的词语我会使用另一种选择:
val xs = Seq("good", "horrible", "hell")
df.filter($"COMMENTS".rlike(xs.mkString("|"))
否则:
df.filter(xs.foldLeft(lit(false))((acc, x) => acc || $"COMMENTS".rlike(x)))