首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在java中从多个文档中搜索一个单词?

如何在java中从多个文档中搜索一个单词?
EN

Stack Overflow用户
提问于 2016-11-16 15:59:41
回答 2查看 176关注 0票数 0

我的实际要求是列出给定目录中包含搜索短语textToMatch的所有文件,最短时间约为4-5秒,其中文件数量可能高达100000或更多。

我不想要代码,我只想要一个最好的算法。

EN

回答 2

Stack Overflow用户

发布于 2016-11-16 16:22:26

由于您必须打开每个文件,因此您还可以使用工具构建来完成此特定任务。使用grep

我们有100000个文件需要查看。

代码语言:javascript
复制
% ls -l *.txt | wc -l          
100000

它们包含Vestibulum

代码语言:javascript
复制
% grep Vestibulum 1.txt        
Aenean commodo ultrices imperdiet. Vestibulum ut justo vel sapien venenatis tincidunt.
euismod ultrices facilisis. Vestibulum porta sapien adipiscing augue congue id pretium lectus

计算包含Vestibulum的文件,计时。

代码语言:javascript
复制
% time grep -l Vestibulum *.txt | wc -l
100000
grep --color=auto -l Vestibulum *.txt  0,28s user 0,25s system 99% cpu 0,537 total
wc -l  0,00s user 0,01s system 1% cpu 0,537 total

如你所见,这只需要在我的机器上运行一秒钟。

票数 1
EN

Stack Overflow用户

发布于 2016-11-16 19:40:38

你的程序必须处理两个问题:

  1. 查找每个子目录中的每个文件,
  2. 在每个文件中搜索所需的短语。

对于1:您可以迭代或递归地搜索给定目录中的文件,或者让Java7或8通过使用FileVisitorApache Commons IO为您完成这项工作。

对于2:您可以使用Java Scanner或实现自己的非常快速的算法来搜索内部文件,称为Boyer-Moore算法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40626780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档