1

我正在开发一个Java应用程序。它在后端有 mongo db,用于存储文件(在 gridFS 中)。我使用 spring 框架与 mongo db 进行交互。我想搜索存储文档(pdf、doc、txt 文件)中存在的文本。我知道 mongo db 支持全文搜索(从 2.4 开始)。我的问题是

  1. spring框架支持全文搜索吗?还是我们应该借助 solr 或 lucene?
  2. 如果以上两种情况都可以,那么哪个是更好的选择?
  3. 关于索引的问题?我对全文搜索中的索引知之甚少
  4. 2.4 什么时候推出?
4

2 回答 2

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 附件。看看这些链接:

http://www.elasticsearch.org/

https://github.com/richardwilly98/elasticsearch-river-mongodb/

3 你需要澄清这个问题。

4 不知道mongodb 2.4版什么时候能出来,但是别忘了全文搜索还是一个实验性的功能,而且我觉得这个功能还是不支持gridFS的。

于 2013-01-12T07:49:39.830 回答
1

MongoDB 文本搜索不会从 PDF、DOC 或任何存储在 GridFS 中的文件中提取文本。从 MongoDB 的角度来看,GridFS 文件是未解释的二进制文件。

如果您想使用 MongoDB 的新文本搜索功能来搜索不同的文件类型,您需要在应用程序中从这些文件中提取文本并将文本添加到您明确插入 MongoDB 的文档中。您可以使用Apache Tika等现有库来完成繁重的工作。请注意,Solr/Lucene 使用 Tika 从富文本文档类型中提取文本。

至于 MongoDB 中的文本搜索索引,请参考这里的发行说明

于 2013-01-30T14:26:25.050 回答