在Solr中将集合对象索引为值提供者

2020-09-14 12:29发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


要求是显示"兼容产品"以及产品搜索结果。

兼容产品也是一种产品(不同产品扩展模型),其中可以将一种或多种产品作为兼容产品添加到产品中。 我必须在类别页面中显示它。 例如 在电信公司中,我必须显示计划的兼容电话列表。

创建了一个多值solr属性,并添加了一个自定义值提供程序来对该属性建立索引。

在valueprovider中,我可以获取兼容产品模型的列表,并将产品代码作为fieldValues返回。

在类别页面中填充搜索结果时,我正在数据库中查询这些兼容产品,并填充必需的属性,例如url,名称和代码。 我觉得这种方法很不好,因为我每次都要向数据库查询这些项目,而正确的方法是使用solr结果。

如果有人通过更好的方法实现了此功能,请提供您的想法。 或类似的要求。

诸如侦听器,后处理器或前置处理程序之类的东西可以处理此功能吗?

谢谢

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


要求是显示"兼容产品"以及产品搜索结果。

兼容产品也是一种产品(不同产品扩展模型),其中可以将一种或多种产品作为兼容产品添加到产品中。 我必须在类别页面中显示它。 例如 在电信公司中,我必须显示计划的兼容电话列表。

创建了一个多值solr属性,并添加了一个自定义值提供程序来对该属性建立索引。

在valueprovider中,我可以获取兼容产品模型的列表,并将产品代码作为fieldValues返回。

在类别页面中填充搜索结果时,我正在数据库中查询这些兼容产品,并填充必需的属性,例如url,名称和代码。 我觉得这种方法很不好,因为我每次都要向数据库查询这些项目,而正确的方法是使用solr结果。

如果有人通过更好的方法实现了此功能,请提供您的想法。 或类似的要求。

诸如侦听器,后处理器或前置处理程序之类的东西可以处理此功能吗?

谢谢

付费偷看设置
发送
3条回答
SKY徐
1楼 · 2020-09-14 13:06.采纳回答

您好:我们已经取得了类似的成绩,并且我提出的建议已经过测试,表现良好。

例如,您有两个计划,即计划A和计划B。计划A的兼容产品是Apple iPhoneX和Samsung Galaxy Note9。计划B的兼容产品是Apple iPhone 8和三星Galaxy 8。

现在创建一个名为CompatibleProductsValueProvider的值提供程序。 在您的价值提供者中,执行以下操作。

 列表 compatibleProductModels = planAProduct.getCompatibleProducts();
 
  List  compatibleProductsData = new ArrayList <>();
/*将所有compatibleProductModels转换为compatibleProductsData,仅填充您需要在前端显示的字段,例如名称,描述和价格。  */
 
  Gson gson =新的Gson();
  字符串valueToBeSentToSolr = gson.toJson(compatibleProductsData);
 
 //上面的函数会将您的列表转换为json对象,并返回一个字符串,该字符串将发送给solr。

  

现在,当您从solr中检索数据时,您将从solr中获得该字符串,并通过

将该字符串转换回对象。
  Gson gson = new Gson();
  List  compatibleProductsData = gson.fromJson(solrProduct.getCompatibleProductsJson());
 


  

一旦有了数据对象,就可以轻松地在前端显示。 这种方法的好处如下:
1)当用户查询solr时,您将永远不必打数据库
2)您将避免有时搜索效果不佳的文本搜索,
3)您不必创建不必要的文本字段。 如果您不知道,如果未正确配置solr,创建许多文本字段可能会产生意外的结果。

shere_lin
2楼-- · 2020-09-14 12:56

谢谢-这正是我真正想做的。 我将尝试实现相同的方法。

SAP小菜
3楼-- · 2020-09-14 12:52

如果您不想访问数据库以获取相关产品数据,则可以通过在查询中传递产品代码来在Solr上进行文本搜索,这将带来Solr的结果, 更快,您可以使用它们来显示。

一周热门 更多>