2015-06-22 39 views
0

我添加了一個新的屬性到我的Solr.impex基於此屬性的銷售產品不應列在搜索建議以及搜索結果中,我做了以下更改但無法獲得預期的結果: -Solr屬性沒有給出預期的結果

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;valueProviderParameter 
;$solrIndexedType; sale    ;boolean;   ; ; ; ; ; ; 

,並重寫TEXTSEARCH方法類似如下:

public class DefaultCustomSolrProductSearchService <ITEM> extends DefaultSolrProductSearchService 
{ 
    @Override 
    public ProductCategorySearchPageData<SolrSearchQueryData, ITEM, CategoryModel> textSearch(
      String text, PageableData pageableData) { 
     SolrSearchQueryData searchQueryData = createSearchQueryData(); 
     searchQueryData.setFreeTextSearch(text); 
     List<SolrSearchQueryTermData> searchTermList = new ArrayList<SolrSearchQueryTermData>(); 
     SolrSearchQueryTermData searchTerm = new SolrSearchQueryTermData(); 
      searchTerm.setKey("sale"); 
     searchTerm.setValue(Boolean.FALSE.toString()); 
     searchTermList.add(searchTerm); 
     searchQueryData.setFilterTerms(searchTermList); 
     return super.doSearch(searchQueryData, pageableData); 
    } 

回答

2

看起來像主要問題是您的sale字段不是一個方面,因此它不會被添加到結果SOLR搜索查詢中。另外,正如Stretch所說,您的代碼不僅會從建議結果中過濾掉銷售產品,還會從常規文本搜索結果中過濾掉銷售產品。我不認爲這是你想達到的。

由於SearchPageController對於文本搜索和自動填充建議都使用相同的服務方法,因此可能的解決方案可能會引入一個單獨的外觀(或者控制器輔助方法已足夠)以獲得建議。您也可以使用DefaultSolrProductSearchService.searchAgain(SolrSearchQueryData, PageableData)服務方法進行復雜過濾。

0

一般來說,你應該通過轉換器/ Populators擴展這個,而不是通過服務。

如果你不想在建議中使用這些產品,但你確實希望它們在結果中,那麼你試圖在上面編碼的內容是不正確的。上面的代碼似乎試圖從所有結果中過濾它們。

相關問題