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

Creating an online search engine for large XML database (10GB - 1TB of data) with server running

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

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

尽管如此,大多数人仍然将他们的数据存储在搜索索引以外的其他地方,从而在搜索索引和数据存储库之间实现某种同步。

根据评论编辑:

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

这里是 Norch 的作者。

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

Norch 非常适合以下场景:

  1. 如果你要求你的技术栈是javascript那么java(solr,elasticsearch)就out了。 Norch 允许您 运行 javascript

  2. 上的所有内容
  3. 如果您想 运行 真正低端硬件上的搜索引擎。 Norch 的系统要求低得离谱,尤其是对于较小的数据集

  4. "Offline first" 个网页。 Norch 允许您将搜索索引复制到用户浏览器中。人们仍然在思考什么是最好的方法,什么时候最好,但是这种轻松将自身复制到客户端机器的能力使 Norch 与竞争项目不同。

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

还有一些其他的极端情况,其中 Norch 是 good/best- 但上面提到的那些是主要的。