Java 我可以将一个值的列表放入Solr中的多值提供程序中吗?

Java 我可以将一个值的列表放入Solr中的多值提供程序中吗?,java,solr,hybris,Java,Solr,Hybris,我试图在Solr中加入一个具有动态值的多值提供者。在中,我发现了这样的解释:“如果为true,则表示单个文档可能包含此字段类型的多个值”。当我尝试将字段值列表与多个值放在一起时,我成功了,但当我尝试模拟一个值列表时,什么都没有发生 我的代码如下: public class ArezzoCoCategoriesAvailableValueProvider extends AbstractPropertyFieldValueProvider implements FieldValueProvider

我试图在Solr中加入一个具有动态值的多值提供者。在中,我发现了这样的解释:“如果为true,则表示单个文档可能包含此字段类型的多个值”。当我尝试将字段值列表与多个值放在一起时,我成功了,但当我尝试模拟一个值列表时,什么都没有发生

我的代码如下:

public class ArezzoCoCategoriesAvailableValueProvider extends AbstractPropertyFieldValueProvider implements FieldValueProvider,
    Serializable {

private static final Logger LOG = Logger.getLogger(ArezzoCoCategoriesAvailableValueProvider.class);

private FieldNameProvider fieldNameProvider;
private ArezzoCoCategoryService categoryService;
private UrlResolver<CategoryModel> categoryModelUrlResolver;

private final Locale locale = new Locale("pt", "BR");

@Override
public Collection<FieldValue> getFieldValues(IndexConfig indexConfig, IndexedProperty indexedProperty, Object model) throws FieldValueProviderException {
    if (model instanceof CategoryModel) {
        final String fieldName = getFieldNameProvider().getFieldName(indexedProperty, null, FieldNameProvider.FieldType.INDEX);
        List<FieldValue> values = new ArrayList<>();
        CategoryModel category = (CategoryModel) model;

        String categoryUrl = getCategoryModelUrlResolver().resolve(category);
        String categoryName = category.getName(locale);

        if (StringUtils.isEmpty(categoryName) || StringUtils.isEmpty(categoryUrl)) {
            LOG.error("The cateogry with code: " + category.getCode() + " has problems with Name or Url.");
            return values;
        }

        CategoryEntryData categoryEntry = createNewCategoryEntryData(categoryName, categoryUrl);
        values.add(new FieldValue(fieldName, getJsonObject(categoryEntry, LOG)));

        if (category.getBcMainCategory() > 0) {
            List<CategoryModel> filterCategories = getCategoryService().getFilterCategoriesWithProductsInCommon(category, category.getCatalogVersion());
            filterCategories.forEach(cat -> {
                CategoryEntryData categoryEntryData = createNewCategoryEntryData(createNameWithFilter(categoryName, cat.getName(locale), getConnectionTerm(cat.getSupercategories())), createUrlWithFilter(categoryUrl, cat));
                values.add(new FieldValue(fieldName, getJsonObject(categoryEntryData, LOG)));
            });
        }
        return values;
    } else {
        throw new FieldValueProviderException("Cannot Generate url for this specific category");
    }
}

public FieldNameProvider getFieldNameProvider() {
    return fieldNameProvider;
}

public void setFieldNameProvider(FieldNameProvider fieldNameProvider) {
    this.fieldNameProvider = fieldNameProvider;
}

public ArezzoCoCategoryService getCategoryService() {
    return categoryService;
}

public void setCategoryService(ArezzoCoCategoryService categoryService) {
    this.categoryService = categoryService;
}

public UrlResolver<CategoryModel> getCategoryModelUrlResolver() {
    return categoryModelUrlResolver;
}

public void setCategoryModelUrlResolver(UrlResolver<CategoryModel> categoryModelUrlResolver) {
    this.categoryModelUrlResolver = categoryModelUrlResolver;
}
Solr版本:7.1.0 Hybris版本:6.6.0.17

所以,我的问题是:我可以在Solr中的多值提供程序中放置一个值的列表吗?我配置属性时出错了

解决方案:
上面的代码没有错。错误在方法
getJsonObject(…)
上,我解决了。好的,如果有人需要帮助来创建具有多值的提供程序,这就是一个例子。

从Solr方面来说,在多值字段列表中使用单个值没有错,因此至少在Solr方面是正确支持的。我不熟悉Hybris如何与Solr集成。你能告诉我们你在Solr索引中搜索的代码吗?看看你有什么参数。你能分享你正在使用的小补丁吗?e、 g.1905.15?同样,同意马菲克的观点。共享ArezzocCategoriesAvailableValueProvider的Java代码。这看起来是自定义的,而不是OOTB。当然,是用代码更新的
INSERT_UPDATE SolrIndexedProperty; solrIndexedType(identifier)[unique = true]; name[unique = true] ; type(code); sortableType(code); currency[default = false]; localized[default = false]; multiValue; useForSpellchecking[default = false]; useForAutocomplete[default = false]; fieldValueProvider; valueProviderParameter;displayName[lang=pt];displayName[lang=en];ftsQuery;ftsQueryBoost;ftsWildcardQuery;ftsWildcardQueryBoost;ftsPhraseQuery;ftsPhraseQueryBoost;includeInResponse[default = true];
                             ; $solrIndexedType ; categories_available                  ; string    ;              ; ; true;true;true;true; arezzoCoCategoriesAvailableValueProvider   ;   ;Categorias    ;Categories    ;true   ;100,00  ;true ;50,00;true;25,00 ;