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

2020-09-14 12:29发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)要求是显示兼容产品以及产品搜索结...

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

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


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

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

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

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

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

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

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

谢谢

3条回答
SKY徐
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,创建许多文本字段可能会产生意外的结果。

一周热门 更多>