在数据库和搜索方面我是个新手,所以请多多包涵。我试图在 Meteor 应用程序中实现搜索功能。 我检查了气氛,偶然发现了这 4 个选项。
- Mattodem 轻松搜索
- 搜索来源
- Atmosphere 上的 Elasticsearch 包(听说过时了)
- Atmosphere 上的弹性大数据包
我的需求是简单的搜索,能够处理可能有数据嵌套的较大数据集。例如一个任务,可能有评论或链接等。(全文和多于正则表达式的查询会很好)
我读到这个是为了方便搜索,即使使用某种形式的弹性或 Mongodb 应用程序,似乎也只是针对单个 Mongo 集合的应用程序?例如,如果我想搜索
Dinosaurs = new Meteor.Collection('dinosaurs');
和
Mammals = new Meteor.Collection('mammals');
?
对于上述 4 个选项的优缺点,您有任何建议吗? 1 似乎相对容易实现,但我不确定使用弹性引擎意味着什么 here .如果我要实现弹性,我该如何在 Meteor 中做呢?它与实现 Elasticsearch HTTP API 有什么不同吗?
Search Source 类似,也支持 Elastic here .老实说,我不知道这些差异。
最佳答案
这个 github 项目演示了如何将 Meteor 与 ElasticSearch(不是 Mongo)一起用于搜索应用程序
它基本上将一个字段链接到一个触发 Elasticsearch 的 session 变量。结果存储在一个 mongo 集合中,该集合通过 Meteor 机制推送到客户端。这些比数据集小得多,因此可以快速更新。
就跨集合搜索而言,这是一个典型的数据库模式定义问题。如果您需要进行连接,则 mongodb 不是最佳解决方案。和任何 SQL 数据库一样的关系数据库会更适合,但是,您应该研究数据的“非规范化”,看看您是否可以创建一个适合您的用例的结构。
这篇文章很好地解释了这意味着什么:
http://blog.mongodb.org/post/87892923503/6-rules-of-thumb-for-mongodb-schema-design-part-2
祝你好运。
关于javascript - Meteor JS 中的搜索工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29777824/