我需要对大量文本进行索引。搜索结果必须给出包含查询的文件名称以及每个文件中匹配查询的所有位置 - 这样,我就不必加载整个文件来查找匹配部分。您可以推荐哪些库来完成这项工作?
更新:已经有人建议使用Lucene。您能否给我一些关于如何使用Lucene实现这一点的信息?(我看到了一些示例,其中搜索查询仅返回匹配的文件)
更新:已经有人建议使用Lucene。您能否给我一些关于如何使用Lucene实现这一点的信息?(我看到了一些示例,其中搜索查询仅返回匹配的文件)
请看一下http://www.compass-project.org/,它可以被视为Lucene的一个封装,Compass简化了Lucene的常见使用模式,比如Google风格的搜索,索引更新以及更高级的概念,如缓存和索引分片(子索引)。Compass还使用了并发提交和合并的内置优化。
有关详细信息,请参见概述页面:http://www.compass-project.org/overview.html
我已经将其轻松集成到Spring项目中。它非常容易使用,并且能够给您的用户提供类似于Google的搜索结果。
你为什么不尝试通过读取所有文件来构建一个状态机呢?状态之间的转换将是字母,而状态将是终态(一些文件包含所考虑的单词,在这种情况下,列表可在那里获得)或者中间态。
至于多单词查找,您必须在交集结果之前单独处理它们。
我相信Boost::Statechart库可能对此有所帮助。