2020-09-14 18:46发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家们,
我需要如下自定义自动建议:-
搜索框组件中的搜索词应与产品名称/说明匹配,并且匹配产品的所有相关类别均应显示为自动提示。
开箱即用的Hybris将搜索词与类别名称匹配。
谢谢,SPS。
@ResponseBody @RequestMapping(value ="/img/autocomplete",方法= RequestMethod.GET) 公共AutocompleteResultData getAutocompleteSuggestions(@RequestParam(" term")最终String术语) { 最终List 项=新的ArrayList (); 布尔值addFacet = true; 最终的AutocompleteResultData resultData = new AutocompleteResultData(); 最终List autocompleteSuggestionData = productSearchFacade.getAutocompleteSuggestions(term); 用于(最终AutocompleteSuggestionData termData:autocompleteSuggestionData) { terms.add(termData.getTerm()); 如果(addFacet) { addFacet = false; 最终FacetSearchPageData searchPageData = commerceProductSearchService .textSearch(term,null); 最终List >构面= searchPageData.getFacets(); 用于(最终FacetData facetData:facets) { 如果(CATEGORY_FACET_NAME.equalsIgnoreCase(facetData.getName())) { resultData.setCategoryResults(getCategories(facetData,term)); } } resultData.setProductCount(searchPageData.getPagination()。getTotalNumberOfResults()); } } 最终List 产品= productSearchFacade.textSearch(term).getResults(); 如果(CollectionUtils.isNotEmpty(products)) { resultData.setProducts(sublist(products)); } resultData.setSuggestions(terms); resultData.setOriginalTerm(term); 返回resultData; } 私有List getCategories(最终FacetData facetData,最后的String项) { 最终的List 类别=新的ArrayList <>(); 用于(最终FacetValueData facetValueData:facetData.getTopValues()) { 最终的CategoryData数据= new CategoryData(); data.setCode(facetValueData.getCode()); data.setName(facetValueData.getName()); //这很丑陋,但我们必须以这样一种方式来生成查询URL,即它是所选文本和所单击类别之间的AND。 //%3A是`:`的URL编码值 最终字符串categoryUrl = Config.getParameter(" website.url.https")+"/img/search?q =" +条款 +"%3Arelevance%3Acategories%3A" + facetValueData.getCode(); data.setUrl(categoryUrl); 最终的CategoryResultData categoryResultData =新的CategoryResultData(); categoryResultData.setCategory(data); categoryResultData.setCount(facetValueData.getCount()); Categories.add(categoryResultData); } 返回类别; }
@sps您是否要搜索"衬衫",而您想获得在产品名称,描述和类别名称中具有相同"衬衫"字样的产品?
这是您的要求吗? 让我知道
你好,
即使我也在寻找相同的东西! 因此,请找到一些我认为可能有用的细节。
在SearchPageController中,有一个名为getAutocompleteSuggestions的方法。
在对它们进行调试之后,您将到达DefaultSolrAutoSuggestService.getAutoSuggestionsForQuery方法,该方法在内部形成Solr查询并使用SolrJ对Solr Server进行Web服务调用。 其中返回信息。
在SolrConfig.xml中,转到requestHandler/suggest,将相应searchComponent上的算法更改为FuzzyLookUp。 另外,您可能需要在schema.xml中的自动建议中将tokenizer更改为KeywordTokenizer
嗨,苏拉卜,
请解释哪个类用于CommerceProductSearchService,以便我可以在控制器中引用相同的类。
和常量CATEGORY_FACET_NAME的值。
您好@sps:请点击我解释了solr工作原理的链接。 如果您希望solr文本搜索仅查看产品名称/说明。 然后,将这两个字段设置为文本,其余字段设置为字符串或双精度。
https://answers.sap.com/questions/12769324/customizing-autosuggestion-in-searchbox-to-show-pr.html?childToView=12802332#answer-12802332
因此,solr将仅使用产品名称/说明来制作令牌。 搜索时,将根据与产品名称/描述相匹配的搜索输入来获得结果。
获得搜索结果时,请从结果集中确定所有类别并显示给用户。 在这里查看工作示例: https://www.bestandless.com.au/
转到上面的URL并搜索女士或连衣裙
女士
连衣裙
模糊搜索是非常昂贵的操作。 在下面看到一个很好的答案 https://stackoverflow.com/questions/10880976/solr-lucene-fuzzy-search- 太慢了
不会是良好的用户体验。
更改/suggest上的算法不会有任何区别,因为solr建议使用/spellcheck端点。 因此,如果您想调整令牌生成器,请在/spellcheck上进行。
感谢Saurabh,我看到在DefaultSolrProductSearchFacade.java中,我们有方法textSearch,该方法返回ProductSearchPageData。
我不确定应该在哪里进行定制以获取产品的类别。 任何指针都会有所帮助。
最多设置5个标签!
@sps您是否要搜索"衬衫",而您想获得在产品名称,描述和类别名称中具有相同"衬衫"字样的产品?
这是您的要求吗? 让我知道
你好,
即使我也在寻找相同的东西! 因此,请找到一些我认为可能有用的细节。
在SearchPageController中,有一个名为getAutocompleteSuggestions的方法。
在对它们进行调试之后,您将到达DefaultSolrAutoSuggestService.getAutoSuggestionsForQuery方法,该方法在内部形成Solr查询并使用SolrJ对Solr Server进行Web服务调用。 其中返回信息。
在SolrConfig.xml中,转到requestHandler/suggest,将相应searchComponent上的算法更改为FuzzyLookUp。 另外,您可能需要在schema.xml中的自动建议中将tokenizer更改为KeywordTokenizer
嗨,苏拉卜,
请解释哪个类用于CommerceProductSearchService,以便我可以在控制器中引用相同的类。
和常量CATEGORY_FACET_NAME的值。
您好@sps:请点击我解释了solr工作原理的链接。 如果您希望solr文本搜索仅查看产品名称/说明。 然后,将这两个字段设置为文本,其余字段设置为字符串或双精度。
https://answers.sap.com/questions/12769324/customizing-autosuggestion-in-searchbox-to-show-pr.html?childToView=12802332#answer-12802332
因此,solr将仅使用产品名称/说明来制作令牌。 搜索时,将根据与产品名称/描述相匹配的搜索输入来获得结果。
获得搜索结果时,请从结果集中确定所有类别并显示给用户。 在这里查看工作示例: https://www.bestandless.com.au/
转到上面的URL并搜索
女士
或连衣裙
模糊搜索是非常昂贵的操作。 在下面看到一个很好的答案 https://stackoverflow.com/questions/10880976/solr-lucene-fuzzy-search- 太慢了
不会是良好的用户体验。
更改/suggest上的算法不会有任何区别,因为solr建议使用/spellcheck端点。 因此,如果您想调整令牌生成器,请在/spellcheck上进行。
感谢Saurabh,我看到在DefaultSolrProductSearchFacade.java中,我们有方法textSearch,该方法返回ProductSearchPageData。
我不确定应该在哪里进行定制以获取产品的类别。 任何指针都会有所帮助。
一周热门 更多>