是否有一个很好的索引/搜索引擎的Node.js

Is there a good indexing / search engine for Node.js?

本文关键字:搜索引擎 Node js 索引 有一个 很好 是否      更新时间:2023-09-26

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

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

到目前为止我找到了

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

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

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

只是更新我之前的答案-因为有这么多的讨论,我不想让这个更新丢失。

你可以下载:

是的,看看新发布的Norch

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

编辑:使用search-index模块实现快速的"进程内"搜索功能。

你能解释一下为什么你不喜欢使用外部索引吗?对于全文搜索,我总是使用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),无论如何都需要转储进程内数据。

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