Node.js有一个很好的索引/搜索引擎吗?

时间:2013-05-18 14:01:25

标签: javascript node.js lucene indexing search-engine

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

我不害怕为C / C ++库创建绑定,所以我也对这些建议持开放态度。

到目前为止我找到了

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

我可以“自己动手”,但我更愿意使用现有的解决方案。

编辑:为什么我对独立的索引服务器不感兴趣:我使用快速的进程内键值存储数据库,因此不得不走出去查询过程。

4 个答案:

答案 0 :(得分:16)

只是我之前回答的更新 - 因为有太多的讨论我不想让这个更新迷失。

您可以下载 here

答案 1 :(得分:13)

是的,请查看新发布的Norch

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

编辑:使用search-index module快速“进行中”搜索功能。

答案 2 :(得分:11)

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

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

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

编辑:不确定你在进程内/进程中需要什么样的速度,但我们的PostgreSQL数据库每秒可以进行100k查询而不会出汗,而且它甚至不在SSD上。也许您过度考虑了性能需求 - 毕竟一旦您需要转到多个节点(或使用集群来利用所有CPU),您仍然需要在进程中转储。

答案 3 :(得分:2)

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