我目前正在尝试构建一个小型系统,该系统读取一堆文件名(目前只有几百个),然后允许用户搜索文件名。最终的目标是寻找不会具有完全相同名称的喧嚣,但会分享常用词。我最终想添加一个功能,允许它建议可能的重复。
目前,我将每个文件路径添加到ArrayList,然后将文件名的每个单词传递给使用链接的Hashtable。使用String.split()
创建单词,并将所有非字母数字字符转换为空格。这部分工作正常,你可以搜索单个单词,不用担心。
我知道搜索多个术语,获得响应以及建立与选择每个文档的时间基本相关的理论。
我目前的问题是文件名类似于'mybestfile'。我的程序只能将它们作为单个单词处理。除非搜索'mybestfile',否则你什么也找不到。
任何人都可以建议我应该从这里开始的设计路径。我知道我可以解析整个字典,然后尝试通过匹配子字符串来拉出单词,但说实话,这只是一个简单的程序,我宁愿避免那种事情。
任何帮助都将不胜感激!!
(另外这一点是半学习,一半证明我可以做到,所以我想知道已经存在的解决方案,但更多的是他们如何做到,而不是使用它们)
答案 0 :(得分:1)
您可以从Apache Codec language package中提供的各种“类似声音”和距离算法开始。 (我认为距离算法是在Commons Lang中,而不是编解码器。)
SimMetrics是另一个。实际上无法找到我正在寻找的那个,但是here's a list, too。