我正在开发一个关于java的应用程序。它在后端有mongo db,用于存储文件(在gridFS中)。我使用spring框架与mongo db进行交互。我想搜索存储文件中存在的文本(pdf,doc,txt文件)。我知道mongo db支持全文搜索(从2.4开始)。我的问题是
答案 0 :(得分:2)
1 Spring在其核心功能中不支持全文搜索,但是,在spring-data项目中有两个子项目允许与solr和elasticsearch进行交互,它们都是内置的全文搜索引擎。 apache lucene的顶部,有关详细信息,请查看以下链接:
https://github.com/dadoonet/spring-elasticsearch
https://github.com/SpringSource/spring-data-solr
2取决于你的需求,lucene是一个低级库,而elasticsearch和solr是在lucene顶部构建的开箱即用的搜索引擎,我认为elasticsearch通过mongodb-river提供与mongodb更好的集成。支持gridFS附件的索引。看看这些链接:
https://github.com/richardwilly98/elasticsearch-river-mongodb/
3你需要澄清这个问题。
4我不知道mongodb 2.4版何时可用,但不要忘记全文搜索仍然是一个实验性功能,而且我认为这个功能仍然不支持gridFS。
答案 1 :(得分:1)
MongoDB文本搜索不会从PDF,DOC或文本中删除存储在GridFS中的任何文件。从MongoDB的角度来看,GridFS文件是未解释的二进制文件。
如果您想使用MongoDB的新文本搜索功能搜索不同的文件类型,您需要在应用程序中完成工作以从这些文件中提取文本并将文本添加到您明确插入的文档中MongoDB的。您可以使用现有的库(例如Apache Tika)来完成繁重的工作。请注意,Tika是Solr / Lucene使用的从富文本文档类型中提取文本的方法。
至于MongoDB中的文本搜索索引,请参阅发行说明here