django oscar rebuild_index有错误

问题描述 投票:0回答:1

apps.search.search_indexes.py

class ProductIndex(search_indexes.ProductIndex):

    def index_queryset(self, using=None):
        return super(ProductIndex, self).index_queryset().exclude(categories=None)

    def read_queryset(self, using=None):
        return super(ProductIndex, self).read_queryset().exclude(categories=None)

    def prepare(self, obj):
        prepared_data = super(ProductIndex, self).prepare(obj)    
        attrs = defaultdict(set)

        attrs_from_obj = lambda obj: [attrs[attr.attribute.code].add(attr.value) for attr in obj.attr.get_values()]

        if obj.is_parent:
            for child in obj.children.all():
                attrs_from_obj(child)
        else:
            attrs_from_obj(obj)

        for attr, vals in attrs.items():
            prepared_data[attr] = list(vals)

        return prepared_data

./manage_py rebuild_indexes --noinput之后我有一个错误:

无法向Solr添加文档:Solr响应错误(HTTP 400):[原因:错误:[doc = catalogue.product.1451] unknown field'proizvoditel']

在仪表板中我有产品类型,其属性名为Producer,代码为proizvoditel

我更换了proizvoditel - > proizvoditel_s并且rebuild_index没问题,但搜索不起作用。

django solr django-haystack django-oscar
1个回答
0
投票

如果您收到未知的字段错误,可能是由于您尝试引入的字段尚未在架构中注册。

您使用的是什么版本的Django-Oscar和Solr?我正在使用Oscar 1.5和Solr 4.7.2,因此您的设置可能会略有不同。

如果你在bash中运行以下(假设你正在关注奥斯卡文档)它应该解决你的字段​​问题:

$ python manage.py build_solr_schema > solr-4.7.2/example/solr/collection1/conf/schema.xml

如果您有自己的Solr设置,那么自己运行build_solr_scema并将文件复制到solr的conf目录中。

确保重新启动服务器。然后做:

$ python manage.py rebuild_index --noinput

看看是否有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.