solr - 在 Ecom 应用程序中实现 SOLR 的最佳实践是什么?

标签 solr solrnet

我是 SOLR 的新用户。我正在开发一个具有 SQL 数据库的电子商务 Web 应用程序。我想在应用程序中为我的“类别页面”实现 SOLR,我们将在其中显示该类别的产品以及可用库存、价格和更多详细信息等特定信息。我们还想根据库存情况限制产品展示,如果没有库存,我们将不会展示这些产品。

我正在尝试使用 Delta 导入查询来实现 SOLR,以使我的类别页面更快。我担心的是从 SOLR 获取数据时页面的性能以及实时数据(如股票和价格)的准确性。

实际上,我获取产品数据的数据库查询有点复杂并且有多个连接,所以我必须在 SOLR 数据库中创建多个相关实体。所以由于这个数据上传到 SOLR 很慢。这使得难以频繁上传数据(即使使用增量导入查询),因此我的应用程序缺少实时数据,如产品库存。

基本上我想知道实现 SOLR 的最佳实践方法。我很困惑 1. 我应该将所有数据导出到 SOLR,然后从 SOLR 获取所有详细信息吗? (我担心性能和实时数据) 2. 我应该只从 SOLR 获取索引数据(比如产品 ID),然后从我的 SQL 数据库获取其他详细信息吗? (不确定这种方法的性能)。

所以请帮助我并建议我如何以最佳方式为我的应用程序实现 SOLR。

感谢所有帮助!!

最佳答案

我在开发电子商务解决方案和作为搜索提供程序的 SOLR 时遇到的一个很好的案例实践是仅从 SOLR 检索 ID 并从 SQL 服务器获取数据。

我创建了一个模式,每次在数据库中添加一些新产品时它都会更新。(在我的例子中,产品是由用户在管理控制台中添加的,在你的例子中,你可以使用@Mauricio Scheffer 评论来获得最新更新)

架构中的一个字段是 ID - 表示数据库中产品的 ID。 在查询 SOLR 之后,我收到了 N 个适合查询的文档,并且通过 ID 字段,我从我的数据库中获取了所有信息并将其显示给用户。

所以好的部分是用户总是会从您的数据库中获取数据(实时数据),并且由于 SOLR 的缘故,他的搜索结果会非常快速地显示。

您可以向架构中添加可用于过滤结果的不同字段,例如

  • 类别
  • 日期
  • 价格
  • 尺寸
  • 等...

还有您需要查询的不同字段:

  • 标题
  • 描述
  • 姓名
  • 等...

并添加产品 ID。

因此,在对 SOLR 进行查询后,您有一个产品 ID 列表,现在您唯一需要做的就是实现一个函数,根据 ID 从数据库中获取产品并将其显示在搜索结果页面上.

这种方法性能非常好,因为从基于主键的数据库元素中选择是从 sql 检索数据的最快方式。

我在一个拥有 1.000.000 种产品的网站上工作,搜索时间始终低于 0.2 秒 单用户查询时,浏览器中的页面加载时间不到 0.6 秒。 (我记得运行 SOLR 和 SQL 的服务器是 8Gb ram 和四核 1.8gb)

希望这种实现方式对您有用。

关于solr - 在 Ecom 应用程序中实现 SOLR 的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7221061/

相关文章:

solr - 如何在Solr-5.0中设置JVM-Memory

solr - Elasticsearch 界面

php - 使用(出)Solr 进行分面搜索

solr - 获取solr中多值字段的数量

solr - 如何使用solrnet在solr中使字段搜索不区分大小写

c# - 如何使用 SolrNet 访问多值动态字段?

apache - 在SOLR中的片段前后显示省略号

solr - 规范化 SOLR 记录以进行分片 : _version_ issues

java - Solr 中 StandardTokenizerFactory 和 KeywordTokenizerFactory 的区别?

没有智能客户端的 SolrCloud 索引/查询