我正在构建一个B2B Node应用程序,它拥有大量相关的数据模型。我们目前有自己的搜索查询,但随着我们扩展,有些查询似乎变得迟钝。
我们将需要支持多语言搜索以及基于内容的搜索(搜索相关数据中的匹配内容)。
查询越来越复杂(每个连接上都有多个联接),我现在正在考虑一个托管的搜索工具,比如阿尔戈利亚。
考虑到下面的问题,为什么我应该使用托管云搜索服务而不是继续构建自己的查询呢?
我还应该关注哪些其他的事情可以帮助我在搜索能力上做出决定呢?
关于DB和Cloud数据的维护,看起来就像获取所有数据、缓存数据并将其存储在云中一样简单:
var index = Algolia.initIndex('contacts');
var contactsJSON = require('./contacts.json');
index.addObjects(contactsJSON, function(err, content) {
if (err) {
console.error(err);
}
});发布于 2017-01-27 07:08:35
像Algolia或自托管的Elasticsearch/solr这样的搜索服务作为全文搜索,而不是关系数据库查询。
但听起来瓶颈就在于不断的重新加入。如果您可以使关系数据像全文文档db那样工作,那么这可能是一种更有效的索引类型(预联接类型)。
您还可以查看视图或数据仓库(可能是星型模式)。
但是,如果你要去搜索路线,也许可以调查托管你自己的elasticsearch。
如果需要更多帮助,可以指定数据库、架构、sql、索引、查询详细信息。
发布于 2017-01-28 06:28:43
全面披露:我创建了一家名为SearchStax的公司,前提是公司和开发人员不应花费时间为搜索基础设施(ops)建立、管理、缩放或构建工具--他们最好将员工的时间投资于为公司创造价值,无论是功能、能力、产品还是客户。
基于Lucene之上的开源搜索解决方案(Apache / Elasticsearch)具有现在所需的内容,以及从搜索引擎的功能角度来看近期可能需要的内容。找一家成熟的服务提供商/AS-A-服务公司,专门从事开源搜索,让他们处理所有的问题。它现在看起来可能是很小的努力,尽管您的开发人员花时间和精力在操作上可能不值得。
关于你上述关切:
数据隐私是重要的
您对隐私和安全的关注是可以解决的。有多种方法可以保护Solr环境,正确的MSP或托管解决方案提供程序应该能够解决这些问题。
传输层的安全性可以通过SSL证书来解决。线路上的所有数据都是加密的。
IP过滤和基于用户的身份验证应该解决谁有权访问到什么。Solr-as-a-服务提供的测量搜索支持两者。
c. rest的安全性可以通过多种方式来解决-- OS级别/文件加密,但是您甚至可以通过使用可搜索的加密技术来确保甚至您的服务提供商都不能访问这些数据。
隐私问题都是通过条款和条件来解决的--我相信你的法律部门会从服务提供商的角度来解决这个问题。
数据托管在我们自己的postgres中--与这些重要的集成
Solr提供了通过传统关系数据库(MySQL、Postgres、Oracle等)直接导入数据的能力。您可以使用它,以便Solr可以定期地提取数据,或者编写您自己的简单脚本来通过Solr推送数据。
如果您托管在云中(AWS),则可以创建一个隧道,以便只有Solr部署能够从您的服务器中提取数据,如果您选择使用DIH路由,那么您的数据库服务器就不会暴露给外界。
的速度很重要,但现在没那么重要了
Solr是为搜索速度而建的--我不认为这是你的问题所在。提供服务,比如度量搜索--您可以在AWS或Azure支持的任何数据中心中拆分一个集群,并确保您的搜索部署更接近您的应用程序服务器,因此延迟开销是最小的。
必须能够跨多语言进行基于内容的搜索。
是的,索尔支持这一点。30多种语言。
我们现在是一个很小的开发团队,所以开发资源时间是至关重要的
我在这里有偏见,但我不会让我的开发人员花太多时间在操作上,让他们专注于他们最擅长的工作--构建强大的产品功能,以推动极限并交付业务价值。
如果您有兴趣做一次比较和ROI,与使用SearchStax提供的solr as-a服务进行比较,请查看本文- https://www.searchstax.com/white-papers/why-measured-search-is-better-than-diy-solr-infrastructure/。
https://stackoverflow.com/questions/41887854
复制相似问题