Node.js 为运行服务器的大型XML数据库(10GB-1TB数据)创建在线搜索引擎

Node.js 为运行服务器的大型XML数据库(10GB-1TB数据)创建在线搜索引擎,node.js,search-engine,Node.js,Search Engine,我一直在使用Node.js创建一个网站,最终将能够搜索谷歌专利授权数据库,该数据库以XML格式提供数据。我一直在使用MongoDB作为用户数据库,但有人告诉我,他们在使用MongoDB创建快速搜索引擎时遇到了很多困难,他们还说它变得非常庞大。我应该结合Node.js使用什么数据库技术/软件来创建高效的搜索引擎?在一个网站上运行两种不同的数据库技术,例如MongoDB和PostgreSQL,这会是一个坏主意吗?我在github上发现了一种叫做Norch的技术。这项技术会有帮助吗?你将很难在文本搜索

我一直在使用Node.js创建一个网站,最终将能够搜索谷歌专利授权数据库,该数据库以XML格式提供数据。我一直在使用MongoDB作为用户数据库,但有人告诉我,他们在使用MongoDB创建快速搜索引擎时遇到了很多困难,他们还说它变得非常庞大。我应该结合Node.js使用什么数据库技术/软件来创建高效的搜索引擎?在一个网站上运行两种不同的数据库技术,例如MongoDB和PostgreSQL,这会是一个坏主意吗?我在github上发现了一种叫做Norch的技术。这项技术会有帮助吗?

你将很难在文本搜索中与Postgres或mongodb匹配或击败lucene。因此,Solr或Elasticsearch是更好的选择(它们都使用lucene)

也就是说,大多数人仍然将数据存储在搜索索引以外的其他地方,从而在搜索索引和数据存储库之间实现某种同步

根据评论进行编辑:

Solr和Postgres就是一个例子。Solr将是您的搜索引擎,Postgres将是您的数据存储库。然后,您可以使用从Postgres中提取数据。

这里是Norch的作者

目前,Solr和Elasticsearch可能是最常用的搜索技术,这是有充分理由的——它们现在非常成熟、强大且用户友好。

Norch非常适合以下情况:

  • 如果您要求您的技术堆栈是javascript,那么java(solr,elasticsearch)就不适用了。Norch允许您在javascript上运行所有内容

  • 如果你想在真正低端的硬件上运行搜索引擎。Norch的系统要求低得离谱,尤其是对于较小的数据集

  • “离线优先”网页。Norch允许您将搜索索引复制到用户浏览器中。人们仍然在思考什么是最好的方法,什么时候最好,但这种能够轻松地将自身复制到客户机的能力使Norch不同于竞争项目

  • 如果你有想要分享的语料库。您可以将它们索引到Norch,复制并共享复制文件,而不是共享100万个文件。您可以通过电子邮件发送、发送或放到网上。Norch非常擅长复制索引


  • 还有一些其他的角落案例,Norch是好的/最好的,但上面提到的是主要的案例。

    您是否考虑过使用多个数据库?是的,关于这样做的利弊有什么见解?您能提供更多细节吗?你是说你可以在MongoDB或Postgres中使用Solr或Elasticsearch,这就是为什么它比lucene更好的选择。lucene只是一个库。Solr和Elasticsearch在封面下使用lucene。至于数据同步,我会更新我的答案。