Solr关键字搜索-区分大小写和不区分大小写的结果

2020-09-27 06:32发布

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

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


专家们,

如果要通过产品代码搜索产品(关​​键字搜索),则会遇到6.3版中的问题,从而获得不同的结果。 我很惊讶,我相信这与Solr的schema.xml文件无关。 例如产品代码: LP12345
有效的Senario的"获取结果"。

产品代码: lp12345
获得" 0"结果。

产品代码:产品代码 LP12345 (LP12345)前一个空格。
使用"构面"获取1000个结果,并且在任意构面上进行ckick处理时,结果为" 0"。

我不明白为什么会发生这种情况,根据新版本,在网上商店中有2个属性,而这两个属性都是Cockpit而非网上商店所特有的。

cockpit.search.advancedsearch.casesensitive =假cockpit.search.simplesearch.casesensitive =假

请建议在何处处理这种区分大小写和不区分大小写的结果。 我想实现不区分大小写的结果。

我相信不需要在schema.xml文件中处理此不区分大小写的结果。

先谢谢了。

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

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


专家们,

如果要通过产品代码搜索产品(关​​键字搜索),则会遇到6.3版中的问题,从而获得不同的结果。 我很惊讶,我相信这与Solr的schema.xml文件无关。 例如产品代码: LP12345
有效的Senario的"获取结果"。

产品代码: lp12345
获得" 0"结果。

产品代码:产品代码 LP12345 (LP12345)前一个空格。
使用"构面"获取1000个结果,并且在任意构面上进行ckick处理时,结果为" 0"。

我不明白为什么会发生这种情况,根据新版本,在网上商店中有2个属性,而这两个属性都是Cockpit而非网上商店所特有的。

cockpit.search.advancedsearch.casesensitive =假cockpit.search.simplesearch.casesensitive =假

请建议在何处处理这种区分大小写和不区分大小写的结果。 我想实现不区分大小写的结果。

我相信不需要在schema.xml文件中处理此不区分大小写的结果。

先谢谢了。

付费偷看设置
发送
2条回答
梦想连接
1楼-- · 2020-09-27 07:08

您是否可以在索引属性字段类型中使用 text 代替 string
text 类型已经具有 solr.LowerCaseFilterFactory 添加到其中。
如果没有,您可以尝试将 solr.LowerCaseFilterFactory 添加到 string 字段类型。

这是 schema.xml

上`text`字段类型的声明示例
  
      <分析器>
          。  。  。
          
      
  

  

遇到此问题时,我尝试使用 string 类型的 solr.LowerCaseFilterFactory ,但是遇到其他问题,我不得不坚持使用 text 字段类型(并在solr搜索中进行了大量调整)。

代楠1984
2楼-- · 2020-09-27 06:44

Hi,

如果您正在寻找产品代码重定向到产品详细信息页面,我可以为您提供一种我已经使用过的解决方案。

也可以通过这种方式处理空间和大小写敏感性。 因此,您可以将以下代码段写到搜索页面控制器。

SearchPageController.java:

 如果(StringUtils.isNotBlank(searchText))
          {
              最后的字符串redirectProductView = productFacade.productRedirect(searchText);
              如果(redirectProductView!= null)
              {
                  返回redirectProductView;
              }
             
             
             
              }


  

DefaultCustomProductFacade.java:

 公共字符串productRedirect(最终字符串searchText)
      {
          如果(null!= searchText)
          {
              尝试
              {
                 //最终的ProductModel产品= productService.getProductForCode(searchText);
                  最终的ProductModel产品= mitre10ProductService.getProductForCode(searchText);
                  如果(产品!=空)
                  {
                      返回REDIRECT_PREFIX + productModelUrlResolver.resolve(product);
                  }
              }
              捕获(最终UnknownIdentifierException e)
              {
                  LOG.debug("搜索:" + searchText +"不指向任何产品");
              }
          }
          返回null;
      }


  

您可以在此处编写查询以忽略大小写来获取productmodel,还可以修剪来自控制器的字符串。

希望这会对您有所帮助。

一周热门 更多>