如何在Java中找到数据库中单词的类似匹配?

时间:2012-10-13 22:45:42

标签: java sqlite

我目前的编程项目是Java中的一种法语词典(使用sqlite)。我想知道如果有人想找到“avoir”的现在时态但输入“avior”以及如何处理它会发生什么。所以我认为我可以实现某种最接近的匹配/你的意思是功能。所以我的问题是:

有没有办法使用数据库搜索类似的匹配?

当我在python中做了相同的程序一段时间后(使用xml代替)我使用了这个系统,但它不是很有效,并且需要一个大的误差范围才有效(并且随后建议没有相关性的单词!) ......但类似的东西仍然可以用来减少

def getSimilar(self, word, Return = False):
    matches = list()
    for verb in self.data.getElementsByTagName("Verb"):
        for x in range(16):
            if x % 2 != 0 and x>0:
                if (x == 15 or x == 3 or x == 1): 
                    part = Dict(self.data).removeBrackets(Dict(self.data).getAccents(verb.childNodes[x].childNodes[0].data)) 
                    diff = 0
                    for char in word:
                        if (not char in part):
                            diff += 1
                    if (diff < self.similarityValue) and (-self.errorAllowance <= len(part) - len(word) <= self.errorAllowance):
                        matches.append(part)
                else:
                    for y in range(14): 
                        if (y % 2 != 0 and y>0):
                            part = Dict(self.data).getAccents(verb.childNodes[x].childNodes[y].childNodes[0].data)
                            diff = 0
                            for char in word:
                                if (not char in part):
                                    diff += 1
                            if (diff < self.similarityValue) and (-self.errorAllowance <= len(part) - len(word) <= self.errorAllowance):
                                matches.append(part)
    if not Return:
        for match in matches:
            print "Did you mean '" + match + "'?"
    if Return: return matches

欢迎任何帮助!

杰米

1 个答案:

答案 0 :(得分:2)