0

我目前的编程项目是一种 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

欢迎任何帮助!

杰米

4

1 回答 1

2

尝试使用 https://github.com/mateusza/SQLite-Levenshtein

效果很好

于 2012-10-13T22:48:55.040 回答