Hybris Solr排序

时间:2018-03-27 12:12:43

标签: sorting solr hybris

我修改了我的代码以添加新的solr排序价格。

INSERT_UPDATE FieldSolrSort;sort(indexedType(identifier),code)[unique=true];fieldName[unique=true];descending[unique=true];$IndexedType:price;priceValue;true

我目前有两个solr sort

  • 名称升序
  • 名称降序

我为价格添加了新的solr排序

  • 价格升序
  • 价格下降

但我希望我的新solr排序只显示用户何时登录。有人知道吗?感谢

1 个答案:

答案 0 :(得分:1)

步骤1:导入impex以启用价格排序选项

如果您推荐任何OOTB商店(apparelstore),您可以在Impex中看到价格排序(price-asc)选项。我在下面突出显示了Impex。

第2步:从匿名用户隐藏

如果匿名用户将JSTL条件置于JSP / TAG文件中,则不要对价格进行排序。如下。您也可以对其进行服务器端验证。

  

注意:下面的代码仅供参考,我还没有对其进行测试

orderFormPagination.tag

                        <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
                        <%@ taglib prefix="fn"  uri="http://java.sun.com/jsp/jstl/functions"%>
                        <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%>

                        <c:set var="isLoggedInUser" value="false" />
                        <sec:authorize ifNotGranted="ROLE_ANONYMOUS">
                            <c:set var="isLoggedInUser" value="true" />
                        </sec:authorize>

                        <select id="sortOptions${top ? '1' : '2'}" name="sort" class="form-control">
                            <option disabled><spring:theme
                                    code="${themeMsgKey}.sortTitle" /></option>
                            <c:forEach items="${searchPageData.sorts}" var="sort">

                                <c:if test="${isLoggedInUser || (!isLoggedInUser && !fn:startsWith(sort.code, 'price'))}">
                                    <option value="${sort.code}"
                                        ${sort.selected? 'selected="selected"' : ''}>
                                        <c:choose>
                                            <c:when test="${not empty sort.name}">
                                        ${sort.name}
                                    </c:when>
                                            <c:otherwise>
                                                <spring:theme code="${themeMsgKey}.sort.${sort.code}" />
                                            </c:otherwise>
                                        </c:choose>
                                    </option>
                                </c:if>
                            </c:forEach>
                        </select>

Impex公司

定义SolrIndexedProperty

INSERT_UPDATE SolrIndexedProperty ; solrIndexedType(identifier)[unique=true] ; name[unique=true]      ; type(code) ; sortableType(code) ; currency[default=false] ; localized[default=false] ; multiValue[default=false] ; useForSpellchecking[default=false] ; useForAutocomplete[default=false] ; fieldValueProvider                      ; ftsPhraseQuery[default=false] ; ftsPhraseQueryBoost ; ftsQuery[default=false] ; ftsQueryBoost ; ftsFuzzyQuery[default=false] ; ftsFuzzyQueryBoost ; ftsWildcardQuery[default=false] ; ftsWildcardQueryType(code)[default=POSTFIX] ; ftsWildcardQueryBoost ; ftsWildcardQueryMinTermLength
                                  ; $solrIndexedType                         ; name                   ; text       ; sortabletext       ;                         ; true                     ;                           ; true                               ; true                              ;                                         ; true                          ; 100                 ; true                    ; 50            ; true                         ; 25                 ;                                 ;                                             ;                       ;
                                  ; $solrIndexedType                         ; priceValue             ; double     ;                    ; true                    ;                          ;                           ;                                    ;                                   ; productPriceValueProvider               ;                               ;                     ;                         ;               ;                              ;                    ;                                 ;                                             ;                       ;                              

定义可用的排序

INSERT_UPDATE SolrSort ; &sortRefID ; indexedType(identifier)[unique=true] ; code[unique=true] ; useBoost  
                       ; sortRef3   ; $solrIndexedType                     ; name-asc          ; false   
                       ; sortRef4   ; $solrIndexedType                     ; name-desc         ; false   
                       ; sortRef5   ; $solrIndexedType                     ; price-asc         ; false   
                       ; sortRef6   ; $solrIndexedType                     ; price-desc        ; false   

定义排序字段

INSERT_UPDATE SolrSortField ; sort(indexedType(identifier),code)[unique=true] ; fieldName[unique=true] ; ascending[unique=true]                
                            ; $solrIndexedType:name-asc                       ; name                   ; true                  
                            ; $solrIndexedType:name-desc                      ; name                   ; false                 
                            ; $solrIndexedType:price-asc                      ; priceValue             ; true                  
                            ; $solrIndexedType:price-desc                     ; priceValue             ; false                 

在索引类型产品

中更新排序选项
INSERT_UPDATE SolrIndexedType ; identifier[unique=true] ; type(code) ; variant ; sorts(&sortRefID)                                    
                              ; $solrIndexedType        ; Product    ; false   ; sortRef3,sortRef4,sortRef5,sortRef6

查找detail post here

如果您想了解how to add custom Sort By Option with custom AttributeComparator?