我在一个搜索项目上工作,以建立一个搜索引擎,搜索数百万个文件,需要的帮助关于什么已经存在的最好的方式做同样的事情,起点等。我也尝试了ElasticSearch和Apache SOLR说,大约1000万个文件,但他们需要的时间是几秒钟(2-4秒)。
发布于 2012-11-28 20:22:55
对于数以百万计的文档和相当快的全文搜索,您将无法使用像Term Document Matrix或其他类型的inverted indexing这样的方法绕过合适的搜索引擎。
我建议阅读的全文搜索引擎基础知识,以获得最基本的想法,然后寻找一个好的库,做你需要的事情。(如果您不准备投入大量时间,我不建议您编写自己的搜索引擎。)
推荐阅读:
(不确定你是否需要这些指针,如果你已经知道这些东西,对你有好处。;))
=>关于使用什么的实际建议:我成功地使用了Apache's Lucene,这是一个针对Java的全文搜索引擎库。它为文档索引、标记化、词干提取、停用词等提供了很好的帮助。它还可以让你从逻辑上组合的关键字中搜索(例如,搜索“foo”,但只显示不包含“bar”或“qux”的文档,等等)。
当时,我索引了几百万个文档,能够在很短的时间内得到搜索结果,也就是说,没有明显的延迟。
发布于 2012-11-28 21:11:10
Sphinx ( http://sphinxsearch.com/ )是另一个致力于全文搜索的软件,除了它是一个独立的服务器,具有客户端apis和多种语言的绑定之外,它具有一组与Lucene相似的功能。
一些备受瞩目的网站,如craiglist,将其用作搜索引擎,结果非常好,正如网站上所提到的:
Craigslist.org是一个免费的分类广告网站,有传言称,该网站每天会对Sphinx发起约2.5亿次查询。信不信由你,这是由15个集群的Sphinx盒子完成的,在高峰期只消耗它们总容量的1/4。
发布于 2012-11-29 16:22:29
ElasticSearch是建立在Lucene之上的,它主要关注引擎的“弹性”。如果每个文档都不大,并且10M个文档可以装入内存,那么您可以考虑高级解决方案,例如SRCH2,它可以支持具有许多高级特性的毫秒级搜索。
https://stackoverflow.com/questions/13602879
复制相似问题