我一直在使用Node.js创建一个网站,最终能够搜索以XML格式提供数据的Google Patent Grant数据库。我一直在使用MongoDB作为用户数据库,但是有人告诉我他们使用MongoDB创建快速搜索引擎有很多困难,他们还说它变得非常大。我应该使用什么数据库技术/软件与Node.js一起创建一个高效的搜索引擎?为一个网站运行两种不同的数据库技术是不是一个坏主意,例如MongoDB和PostgreSQL?我在github https://github.com/fergiemcdowall/norch找到了一种名为Norch的技术。这项技术会有所帮助吗?
答案 0 :(得分:2)
使用Postgres或mongodb进行文本搜索时,您将很难匹配或击败lucene。因此,Solr或Elasticsearch是更好的选择(它们都使用lucene)。
据说大多数人仍然将数据存储在搜索索引以外的其他内容中,从而在搜索索引和数据存储库之间实现某种同步。
根据评论进行修改:
一个例子组合是Solr和Postgres。 Solr将成为您的搜索引擎,Postgres将成为您的数据存储库。然后,您可以使用DataImportHandler从Postgres中提取数据。
答案 1 :(得分:2)
Norch的作者在这里。
目前,Solr和Elasticsearch可能是最常用的搜索技术,并且有充分的理由 - 它们现在非常成熟,功能强大且用户友好。
Norch非常适合以下场景:
如果您要求技术堆栈是javascript,那么java(solr,elasticsearch)就会出局。 Norch允许您在javascript上运行所有内容
如果您想在真正的低端硬件上运行搜索引擎。 Norch的系统要求非常低,特别是对于较小的数据集
"首先离线"网页。 Norch允许您将搜索索引复制到用户浏览器中。人们仍然围绕着这样做的最佳方式,以及最好的方式,但是这种能够轻松地将自身复制到客户端机器的能力使得Norch与竞争项目不同。
如果您有要分享的语料库。您可以将它们编入Norch,复制并共享复制文件,而不是共享100万个文件。您可以通过电子邮件发送,转发或将其放在网上。 Norch非常擅长复制索引。
还有其他一些角落案例,其中Norch是好的/最好的 - 但上面提到的那些是主要的。