【问题标题】:Ideas for full text search MongoDB & node.js [closed]全文搜索MongoDB和node.js的想法[关闭]
【发布时间】:2012-08-02 08:09:04
【问题描述】:

我正在为我的网站开发一个搜索引擎,我想为其添加以下功能;

  1. 全文搜索
  2. 您的意思是功能
  3. MongoDB 中的数据存储

我想做一个安静的后端。我将手动将数据添加到 mongodb 并将其编入索引(我更喜欢哪个?Mongodb 索引或其他一些搜索索引库,如 Lucene)。我也想使用 node.js。这些是我从研究中发现的。对于架构的任何想法都将不胜感激

提前致谢

【问题讨论】:

  • 您可能想查看Sphinx
  • 感谢您的回复,但我认为 sphinx 最新的稳定版本在处理 mongodb 文档 id 方面存在一些问题,您是否曾经将 sphinx 与 mongoDB 一起使用?
  • 不,我没有。这只是一个非常普遍的建议,作为您解决方案的一个可能组成部分,以防您不知道。听起来你比我更了解将它与 mongoDB 集成。
  • 我将它用于 mysql,我尝试将它用于 mongodb。我只是对它做了一点研究

标签: node.js mongodb lucene sphinx elasticsearch


【解决方案1】:

我正在使用 Node.js / MongoDB / Elasticsearch(基于 Lucene)。这是一个很好的组合。流程也很棒,因为所有 3 个包(可以)都将 JSON 作为其原生格式处理,因此无需转换 DTO 等。

看看: http://www.elasticsearch.org/

【讨论】:

  • 感谢您的回复,我也得到了这 3 对,但您是否使用像谷歌搜索这样的“您的意思是”功能?我也需要它。我认为弹性搜索没有这样的未来
  • 是的,你是对的,他们正在等待 Lucene 4.0 发布后再实施:github.com/elasticsearch/elasticsearch/issues/911
  • 谢谢,我也是这样总结的。我会等待那个版本。
  • 能否请您发布一个简单的教程或一些关于如何将弹性搜索添加到 node.js + mongodb 的指导?
  • 也许在未来。现在通过 http/rest 与 ES 交谈。只需在 Node 中使用 HTTP-stuff 或使用 github.com/phillro/node-elasticsearch-client 即可获得一个不错的库。我的方法是在 ES 中进行搜索查询,并检索 docid。然后使用这些 docid 在 mongoDB 中进行多键提取。这允许 ES 保持精简(除了在 Mongo 中进行 fetch 所需的 id 之外不需要存储任何东西),保持数据存储(mongodb 和 ES)同步等问题更少
【解决方案2】:

我个人使用 Sphinx 和 MongoDb,这是一对很棒的组合,我对它没有任何问题。

我将 MongoDB 备份到一个 MySQL 实例上,Sphinx 只是快速索引该实例。由于您永远不需要主动索引 _id,因为我不知道谁会知道要搜索的对象之一的 _id,您可以将其作为字符串字段存储在 MySQL 中,它会正常工作。

当我从 Sphinx 中提取结果时,我所做的只是转换为(在 PHP 中)一个新的 MongoId,或者在您的情况下为 ObjectId,然后简单地在这个对象 ID 上查询其余数据.它再简单不过了,没有问题,没有麻烦,什么都没有。而且我可以将重新索引增量索引的负载分拆到我的 MySQL 实例上,让我的 MongoDB 实例处理它需要做的事情:为用户提供美味的数据。

【讨论】:

  • 感谢您的回复,我将尝试使用 mongodb 进行 sphinx
  • @cubuzoa np,一条建议;如果您将它与 MySQL 连接器(如我)一起使用,请确保使用 MySQL 的默认自动递增 id 作为 Sphinx 到 Delta 索引的键。我也会推荐 delta 索引而不是实时索引 atm。
猜你喜欢
  • 2014-03-19
  • 2013-09-05
  • 2013-11-19
  • 2018-11-23
  • 2014-06-03
  • 1970-01-01
  • 2014-11-24
  • 1970-01-01
相关资源
最近更新 更多