1

我在使用django-haystack + Solr时遇到了一个奇怪的问题:每个字段都会收到一个列表,而不是实际的原始值。

索引后,这是我的 Solr 索引的摘录(从 Solr 管理员粘贴):

{
    "id":"forum.category.4",
    "django_ct":["forum.category"],
    "django_id":[4],
    "text":["Divers"],
    "name":["Divers"],
    "url":["/forum/#divers"],
    "url_str":["/forum/#divers"],
    "name_str":["Divers"],
    "django_ct_str":["forum.category"],
    "text_str":["Divers"]},

如您所见,每个相关数据都在一个 1 元素列表中建立索引,这使得进一步的查询变得不可能。

这是我的索引定义:

class CategoryIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, model_attr='name')
    name = indexes.CharField(model_attr='name')
    url = indexes.CharField(indexed=False)

    def get_model(self):
        return Category

    def prepare_url(self, obj):
        return obj.get_absolute_url()

有什么建议吗?提前谢谢。

4

1 回答 1

1

如果您没有在 Solr 中为您的集合设置显式架构,并且您正在使用数据驱动配置集(也称为无架构模式),则默认情况下所有字段都是多值的。使用适当的模式并设置字段以multiValued="false"获得您正在寻找的行为。

对于django-haystack,您可以使用build_solr_schema命令manage.py.

于 2018-04-21T14:34:04.973 回答