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

Ven*_*emo 58 javascript lucene indexing search-engine node.js

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

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

到目前为止我发现了

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

我可以"自己滚动",但我更喜欢使用现有的解决方案.

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

Fer*_*gie 15

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

你可以在这里下载 :

  • [看起来](https://github.com/fergiemcdowall)你是norch的附属机构.请注意,我们的[自我推销政策](http://meta.stackexchange.com/questions/57497)要求您在此类答案中披露此信息,并且您没有在很大比例的帖子中提及该产品. (3认同)
  • @josliber我对这个问题犹豫不决但是为了记录:Norch是一个开源项目,我和其他人利用我们的业余时间为了人类的利益,因为它是非商业性的,恰好在我的GitHub用户名下.至于"很大比例的帖子",那不是真的,但我们当然做了(非常小)的工作量与意识,这相当于stackoverflow上的一些帖子. (2认同)

Fer*_*gie 13

是的,看看新发布的Norch

Norch基于node.js 的搜索索引模块,该模块又基于Google强大的levelDB索引.

编辑:使用搜索索引模块快速"进行中"搜索功能.

  • [看起来](https://github.com/fergiemcdowall)你是norch的附属机构.请注意,我们的[自我推销政策](http://meta.stackexchange.com/questions/57497)要求您在此类答案中披露此信息,并且您没有在很大比例的帖子中提及该产品. (2认同)

Mat*_*ant 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),您仍然需要在进程中转储.

  • "并且结果的返回速度比基于Lucene的解决方案(如弹性搜索)更快." 有什么基准可以支持吗?我几乎可以肯定,大多数评论都会反过来. (2认同)