我正在寻找任何开源命令行工具或工具,它们将允许我索引和搜索大量纯文本文件。近似搜索将是一个加分项。该工具只需要打印匹配的文件,尽管一些匹配上下文会很有用。GUI 工具对我的应用程序没有用,任何逐个搜索文件的工具(例如 grep)也没有用。我基本上针对 unix 平台(osx、linux、bsd)。
编辑:我对任何系统范围的工具或需要在后台运行的工具都不感兴趣。基本上,我想为一个充满文本文件的目录树建立一个索引,然后稍后能够对其进行搜索。最好索引是一个或几个我可以指定位置的文件。
有任何想法吗?
答案1
最好的办法是将文本文件输入 MySQL 数据库并使用其 FullText 匹配系统。这将提供非常快速的搜索,并根据结果与搜索的匹配程度进行排名。
将 MySQL 数据库与其他系统(例如用于文档搜索的网站等)连接起来是一项相当简单的任务。
有用的资源:
答案2
如果你想搜索文件按文件名:
用于此目的的标准 Unix 工具是定位。它在 cron 作业中构建文件数据库,然后locate
搜索匹配项。
它是大多数 Linux 发行版的一部分(通常是“locate”或“mlocate”包)。
如果你想搜索文件按内容:
有多种搜索引擎可以为您索引文档(有些甚至支持纯文本以外的其他格式,例如文字处理器文档)。例如比格犬和Google 桌面搜索维基百科上有一份相当详尽的列表:
http://en.wikipedia.org/wiki/List_of_search_engines#Desktop_search_engines
编辑:
如果您不想使用在后台运行或自动索引所有文件的搜索引擎,您可能仍可以使用桌面搜索引擎。大多数搜索引擎允许您控制索引过程,因此您可以手动启动索引并指定要索引的目录以及索引文件的存放位置。
答案3
答案4
如果你熟悉一些 Python 脚本,可以看一下 whoosh: https://bitbucket.org/mchaput/whoosh/wiki/Home
而且,呃,我猜你已经看过 grep 了。如果你的文件库足够小,可以放入 RAM(缓冲区缓存)中,这实际上相当快。当然,这取决于你的查询的复杂程度。