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

时间:2015-07-05 17:30:35

标签: node.js search-engine

我一直在使用Node.js创建一个网站,最终能够搜索以XML格式提供数据的Google Patent Grant数据库。我一直在使用MongoDB作为用户数据库,但是有人告诉我他们使用MongoDB创建快速搜索引擎有很多困难,他们还说它变得非常大。我应该使用什么数据库技术/软件与Node.js一起创建一个高效的搜索引擎?为一个网站运行两种不同的数据库技术是不是一个坏主意,例如MongoDB和PostgreSQL?我在github https://github.com/fergiemcdowall/norch找到了一种名为Norch的技术。这项技术会有所帮助吗?

2 个答案:

答案 0 :(得分:2)

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

据说大多数人仍然将数据存储在搜索索引以外的其他内容中,从而在搜索索引和数据存储库之间实现某种同步。

根据评论进行修改:

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

答案 1 :(得分:2)

Norch的作者在这里。

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

Norch非常适合以下场景:

  1. 如果您要求技术堆栈是javascript,那么java(solr,elasticsearch)就会出局。 Norch允许您在javascript上运行所有内容

  2. 如果您想在真正的低端硬件上运行搜索引擎。 Norch的系统要求非常低,特别是对于较小的数据集

  3. "首先离线"网页。 Norch允许您将搜索索引复制到用户浏览器中。人们仍然围绕着这样做的最佳方式,以及最好的方式,但是这种能够轻松地将自身复制到客户端机器的能力使得Norch与竞争项目不同。

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

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