在Solr中搜索时如何删除特殊字符

2020-09-02 04:12发布

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

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


嗨,专家

我有一个查询

如果客户部件号是48-32-4024,则用户将同时搜索" 48-32-4024"或" 48324024"

然后用户应该获得产品。

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

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


嗨,专家

我有一个查询

如果客户部件号是48-32-4024,则用户将同时搜索" 48-32-4024"或" 48324024"

然后用户应该获得产品。

付费偷看设置
发送
2条回答
土豆飞人
1楼-- · 2020-09-02 04:30

您好 Mahendher Musipatla

可以通过两种方式解析part#的值

  • 尝试获取部件号中的特殊字符列表,并在建立索引和搜索时将其删除。
  • 在solr中使用类型文本字段,并使用ftsQuery,wildcardquery,fuzzyquery功能。
clasier
2楼-- · 2020-09-02 04:29

嗨,

在5.7之前的以前的hybris版本中,我们使用DefaultFacetSearchService使用SolrQueryConverter来保存所有定义的查询后处理器钩子的引用。

搜索查询后处理器和搜索结果后处理器-这些查询后处理器分别对Solr查询对象和从Solr索引搜索返回的搜索结果对象进行操作。 但是,不赞成使用Post-Porcessors,并且仅当在搜索配置中启用了传统模式时才起作用。

Post 5.7版Hybris提供了侦听器类型的列表,您可以使用FacetSearchListener接口来拦截执行

您可以编写一个名为DefaultFacetSearchListener的类,该类必须实现FacetSearchListener接口并覆盖其方法,并可以从FacetSearchContext参数获取所需的内容。

公共类DefaultFacetSearchListener实现FacetSearchListener

{

@Override

public void afterSearch(最终FacetSearchContext facetSearchContext)引发FacetSearchException

{

最终SearchResult searchResult = facetSearchContext.getSearchResult();

最终QueryResponse solrObject = searchResult.getSolrObject();

最终NamedList response = solrObject.getResponse();

最终NamedList responseList =(NamedList)response.get(" responseHeader");

最终NamedList paramsList =(NamedList)responseList.get(" params");

....

....

< p> ....

}

}

关于

Prashant

一周热门 更多>