我有一个预填充的sqlite数据库导入到Assets文件夹,并用它来为按钮设置一些文本,并将用户输入的内容与该数据库中的正确答案进行比较。但是我有两个我没有解决的问题。
最佳答案
模糊字符串比较算法
下面的自定义暴力破解方法提供了单词交换功能,使您可以完全控制元音/辅音得分阈值,但可以增加比较的总数。
您还将需要检查此线程中描述的方法,例如Apache Lucene:Fuzzy string search library in Java
自定义模糊比较配方:
String.toLower()
。显然,对数据库中的列表进行预处理将大大提高性能。 String
比较功能将比较每个字符并根据字母的接近程度分配自定义分数,其中最低分数将指示最佳匹配。例如,相同的字符将添加零分。每个不匹配的辅音对都会将分数加2。每个不匹配的元音将加1。混合不匹配的元将加3.通过字符数对分数进行归一化。应用简单的阈值以确定可接受的匹配。在上面的示例中,从threshold=0.2
开始,这将允许每5个字符大约一个小错误(这可以解决简单的拼写错误,但不能丢失字符。请参见下面的步骤4)。 对于长于2个单词的长条目,此方法将对每个数据库条目或更多条目进行10次比较,因此肯定会影响性能。
关于java - 比较时,如何接受近似正确的字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15822937/