Атрибуты Solr не дают ожидаемых результатов

Я добавил новые атрибуты в свой Solr.impex на основе этого продукта продажи атрибутов, которые не должны быть указаны в предложении поиска, а также в результатах поиска, я внес следующие изменения, но не смог получить ожидаемые результаты:-

 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) сервисный метод для комплексной фильтрации.

В общем, вы должны расширить это через Конвертер / Популяторы, а не через Сервис.

Если вам не нужны эти продукты в предложениях, но вы хотите, чтобы они были в результатах, то, что вы пытались кодировать выше, неверно. Код выше, кажется, пытается отфильтровать их от всех результатов.

Другие вопросы по тегам