我希望能够匹配(尽可能接近)两个文本字段。有关如何在Oracle中执行此操作的任何想法。我已经研究过在Oracle Text中使用Context,但是我不知道如何解析其中一个字段来输入select中的contains子句。
示例:搜索“这是红色汽车”将根据两个值中的“红色汽车”返回“红色汽车属于斯蒂芬”。
答案 0 :(得分:1)
我认为您正在寻找的术语是字符串相似性。在尝试找出两个字符串的相似程度时,您可以选择a LOT of different algorithms。
但如果您想要快速简便的解决方案,请查看UTL_MATCH。它可以为您提供0-100的简单数字分数,用于确定两个字符串的相似程度。它只有2种算法可供选择。对于两个示例字符串:
utl_match.edit_distance_similarity('This is Red Car', 'Red Car belongs to Stephen')
使用基本编辑/ Levenshtein距离得分为12(从0到100)。
utl_match.jaro_winkler_similarity('This is Red Car', 'Red Car belongs to Stephen')
得分为51(也是0-100)。所以我猜你可能想用这个来达到你的目的。但是可以随意尝试它们的实际数据,或尝试根据不同的着名算法编写自己的代码(例如,我看到有人使用Sørensen-Dice系数)。