我正在尝试创建一个小型搜索引擎,它使用Java Scanner类来读取文件,将用户查询与文件中查询的关键字相匹配。
但是我有一个问题,我需要对这些关键字进行排名,如果我搜索“计算机”并且被搜索的文件包含4个“计算机”实例,它们将全部显示在一行内,因为它们是相同的。< / p>
然而,如果它返回“电脑商店”那么这应该排名低于“电脑,因为我没有搜索”电脑商店“
我希望你明白,我能做到吗?
由于
答案 0 :(得分:0)
据我所知,你的问题出在搜索引擎逻辑上。在这种情况下,类Scanner是无关紧要的。从流中读取数据只是一个方便的实用程序。
关于搜索引擎,请更好地定义您的输入和所需输出。通常,您应该搜索查询与目标文本的更好匹配。这是什么意思?这很复杂。可能更长的字符序列,可能是更匹配的单词等。人们写了数百名关于此的博士并创建了数千家公司(你听说过谷歌吗?:))。
因此,除非是家庭作业,否则尝试使用像Solr或Lucine这样的工具。否则想想我上面提到的策略。
祝你好运。答案 1 :(得分:0)
更好的方法可能是创建inverted index。
,而不是从文件转到文件中的文字 Java中的简单实现可能只使用Map<String,List<File>>
完成,其中字符串是单词,文件列表表示包含该字符串的文件。