62

我正在为 node.js 应用程序寻找一个好的开源(使用 LGPL 或许可许可证)索引引擎,比如 Lucene。我正在寻找进程内索引和搜索,并且对像 Sphinx 或 Solr 这样的索引服务器不感兴趣。

我也不害怕为 C/C++ 库创建绑定,所以我也愿意接受这些建议。

到目前为止我发现

  • node-clucene似乎不再被积极维护(并且有几个未解决的问题)
  • 我可以为CLucene创建自己的绑定,但它似乎很少维护,而且它的当前版本也远远落后于 Java Lucene
  • Apache Lucy似乎是为为动态语言创建绑定而设计的,但到目前为止它们没有节点绑定(也没有 C API),而且我还没有找到任何关于创建绑定的文档。我也没有找到任何关于其性能的基准。
  • 似乎被放弃的节点搜索
  • jsii似乎仍然是一个原型,也被放弃了
  • fullproof,仅用于在网络浏览器中运行
  • lunr.js似乎只允许序列化整个索引,因此不可扩展

我可以“自己动手”,但我更喜欢使用已经存在的解决方案。

编辑:为什么我对独立的索引服务器不感兴趣:我使用一个快速的进程内键值存储数据库,所以不得不退出进程进行查询是相当浪费的。

4

4 回答 4

16

只是对我之前的回答的更新——因为有很多讨论,我不希望这个更新迷路。

你可以在这里下载

于 2013-08-28T08:51:38.037 回答
14

是的,看看新发布的Norch

Norch 基于 node.js 的search-index模块,该模块又基于 Google 强大的 levelDB 索引。

编辑:使用search-index 模块获得快速的“进程内”搜索功能。

于 2013-07-08T07:57:50.053 回答
11

你能解释一下为什么你对使用外部索引不感兴趣吗?对于全文搜索,我总是恢复使用 PostgreSQL 的全文索引功能——它非常快,索引不需要全索引更新(像 Solr 那样),并且结果返回速度比基于 Lucene 的解决方案(例如 Elastic Search )。

但是如果你真的想在进程中做,你可能想看看 Lunr:http ://lunrjs.com/ - 它在 Node 中工作,而不仅仅是在浏览器中。

编辑:这是我在 Postgres 上比 Lucene 更快的统计数据:http: //fr.slideshare.net/billkarwin/full-text-search-in-postgresql - 见幻灯片 49。

编辑:不确定您正在寻找什么样的速度进/出进程,但我们的 PostgreSQL 数据库每秒可以执行 10 万次查询而不会出汗,甚至在 SSD 上也没有。也许您过度考虑了您的性能需求 - 毕竟一旦您需要转到多个节点(或使用集群来利用所有 CPU),您无论如何都需要转储进程。

于 2013-05-19T15:44:51.960 回答
2

Full Text Search Light,是一个纯 JS 编写的节点模块,用于进行全文搜索。在这里可以找到当前的 git 仓库链接:https ://github.com/frankred/node-full-text-search-light

于 2014-11-20T22:55:54.573 回答