0

我相信这个主题已经被触及了很多,但是经过几个小时的谷歌搜索,我担心我找不到我需要的答案。我真正在寻找的只是一个方向,一个学习我需要的东西的路径。我有一个 MA Access 数据库,我正在尝试编写一个关键字搜索查询,但我想从我的查询中获得非常广泛的结果。说起来很容易,description LIKE "red"但我正在寻找更强大的搜索。甚至会返回部分搜索词的东西,所以如果我搜索“剪贴板”,我也想找到“冲浪板”。我真正想要的是能够进行关键字搜索,它会返回大量结果,但有一种方法可以根据与原始搜索的相关性对它们进行排名。有任何想法吗?

4

1 回答 1

1

您可以计算单词之间的Levenshtein 距离。Levenshtein 距离测量两个序列之间的差异。这也可以让你考虑相似的词。

Levenshtein 距离的范围从 0(单词相等)到最长单词的长度(单词完全不同)。您可能希望将 Levenshtein 值转换为更合适的值。

Dim maxlength As Long
Dim similarity As Single

maxlength = Max(word1.Length, word2.Length)
similarity = (maxlength - levenshteinDist) / maxlength

这会产生 0(不相似)到 1(相等)之间的相似性值。

您可以在此处找到 VBA 实现:
Excel 中的 Levenshtein 距离 - 堆栈溢出
ms 访问 - 在 VBA 中查找类似的发音文本 - 代码日志

注意:Access 没有Max功能。自己编写或明确编码。

于 2013-01-11T14:52:15.620 回答