MS Access 关键字搜索优化
Posted
技术标签:
【中文标题】MS Access 关键字搜索优化【英文标题】:MS Access keyword search optimization 【发布时间】:2013-01-11 14:32:12 【问题描述】:我确信这个主题已经被提及很多,但经过数小时的谷歌搜索后,恐怕我找不到我需要的答案。我真正在寻找的只是一个方向,一条学习我需要的东西的路径。我有一个 MA Access 数据库,我正在尝试编写一个关键字搜索查询,但我想从我的查询中获得非常广泛的结果。说description LIKE "red"
很容易,但我正在寻找更强大的搜索。甚至会返回部分搜索词的东西,所以如果我搜索“剪贴板”,我也想找到“冲浪板”。我真正想要的是能够进行关键字搜索,它会返回大量结果,但有一种方法可以根据与原始搜索的相关性对它们进行排名。有任何想法吗?
【问题讨论】:
使用通配符和大量代码? :) 哈哈谢谢。这就是我现在所处的位置,我已经在紧密的单词匹配中获得了不错的结果,但我想获得更多的结果,但不太确定如何去做。 您可以开始从任一侧剥离字母并使用通配符运行,删除的每个字母都会降低匹配百分比,同样,将中心字符替换为 ?通配符。另请参阅 soundex 和 Levenshtein 的 VBA:wiki.lessthandot.com/index.php/… 【参考方案1】:您可以计算单词之间的Levenshtein distance。 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 实现:Levenshtein Distance in Excel - Stack Overflowms access - Finding similar sounding text in VBA - Stack Overflow
注意:Access 没有Max
函数。自己编写或明确编码。
【讨论】:
这绝对是个不错的起点!谢谢!我得深入研究一下,看看我能得到什么。 Levenshtein 作为排名系统非常棒!万分感谢!现在我只需要努力获得更多结果,这样我就有了排名。以上是关于MS Access 关键字搜索优化的主要内容,如果未能解决你的问题,请参考以下文章