使用 MongoDB 在 Grails 应用程序上运行基于 Lucene 的搜索

Posted

技术标签:

【中文标题】使用 MongoDB 在 Grails 应用程序上运行基于 Lucene 的搜索【英文标题】:Running Lucene-based search on Grails application using MongoDB 【发布时间】:2013-11-04 12:28:19 【问题描述】:

目前我正在研究如何使用 MongoDB 在 Grails 应用程序上实现基于 Lucene 的搜索。

要求包括以下内容:

要索引的数据存储在 MongoDB 中 仅插入数据(不更新,不删除) 应用程序必须在CloudBees 平台上运行 搜索应该在没有任何外部服务(如 Searchly 或 WebSolr)的情况下实现

到目前为止,这似乎不是很复杂,因为有 Grails 插件。但是,我面临的主要问题是我的应用程序使用 dynamic MongoDB 集合。所以我没有每个集合的域类。相反,应该索引的集合可以具有任意名称和模式。因此,我不能使用像 searchable 这样的 Grails 插件,因为这些插件似乎只适用于固定域类(或者我错了吗?)。

有人对如何在这种情况下实施搜索有经验吗?有任何提示、链接、提示或建议吗?

【问题讨论】:

【参考方案1】:

您可以为动态 MongoDB 集合使用一种索引和多种类型。然而,该逻辑应该由您自己编写,因为集成模块是在一系列领域模型索引中完成的。

对于 ElasticSearch,您可以通过 groovy 使用 Jest 进行 ElasticSearch https://github.com/searchbox-io/Jest

不幸的是,Searchly 为单个集合提供了开箱即用的 MongoDB 集成。因此,现在您还需要查询 MongoDB(您动态创建的集合),将数据索引到新类型下的索引并查询它。

由于没有相关答案,我的旧帖子被删除了,好吧:)

【讨论】:

以上是关于使用 MongoDB 在 Grails 应用程序上运行基于 Lucene 的搜索的主要内容,如果未能解决你的问题,请参考以下文章

grails,mongodb - 多个数据库

Grails Scaffolding 的 MongoDB 问题(在 MySQL 中不会发生)

带有 Grails 2.4.3 的 MongoDB (3.0.2) NullPointerException

Grails - 使用身份验证连接到 MongoDB 数据库

mongoDB 作为 Grails 应用程序的文件存储

无法使用 mongodb 插件版本 3.0.3 运行 Grails 应用程序