材料代码中的Solr精确匹配搜索问题包含特殊字符

2020-09-07 10:33发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, 我们有一个要求,如果...

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

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


专家们,

我们有一个要求,如果"用户"使用确切的物料编号搜索,则"用户"将被重定向到该物料的PDP页面。

说明:Hybris将使用以下过滤器检查是否完全匹配:-->忽略大小写(例如搜索材料编号字母的大写或小写)->删除任何特殊字符,例如连字符'-', 下划线'_',磅'#',括号'('和')',正斜杠'/',句点'。

用例:1.材料代码可以是数字或字母数字,带有或不带有特殊字符。 (例如FW35X600XL02,FW35-7002E3L65,ZF-HFW35C812XL80)2.物料代码可以在另一个物料代码中作为子字符串出现。 (例如FW35-8011,FW35-8011T1)3.物料代码可以在物料名称中显示为子字符串。

请提供有关如何实现此目标的建议。

感谢Murali

6条回答
代楠1984
2020-09-07 11:09

嗨,

一个有趣的问题,但是我只能分享一些想法,但是不确定哪个是最好的。 1)这是一个非常普遍的要求,在过去的项目中,我们实际上是将逻辑插入Search Controller中。 用户提供了术语后,我们实际上在数据库中而不是在Solr中搜索了此完全匹配项。 只有在没有确切的马赫数时,我们才在Solr中进行标准搜索。

此方法的原因:实现起来容易且快速+通常效果良好在您的情况下,区别在于小写和特殊字符处理。 为此,您可能已经创建了拦截器-每次将产品保存到DB中时,都将剥离特殊字符并将此简化版本保存在其他字段中。 这样会减慢产品的创建和修改速度,但会导致对数据库的查询非常快。

如果要使用Solr解决方案,我会考虑两种解决方案:

2)使该字段成为一个构面-在建立索引并传递构面时-您将进行精确搜索

3)使用文本搜索功能,但使用一个特殊字段(这意味着要进行一些自定义,以便对完全匹配和不存在完全匹配的标准搜索执行不同的搜索)。 Solr中的此字段需要不同的内容-使用Tokenizer只会创建一个令牌(用于完全匹配)和一些过滤器以删除特殊字符并使用小写字母。

这是一个高级答案,如果您要进行数据库搜索(这是我的建议),那么就足够了。 如果您决定采用Solr方法,我可以为您提供更多详细信息,但是您将需要自己做很多编码和研究,因为这更加复杂。

一周热门 更多>