我目前的编程项目是一种 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
欢迎任何帮助!
杰米