Djando-haystack使用Solr索引列表而不是原始数据

时间:2018-04-21 09:54:38

标签: django solr lucene django-haystack pysolr

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

索引编制后,这是我的Solr索引的摘录(从Solr admin粘贴):

{
    "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()

有什么建议吗?先谢谢。

1 个答案:

答案 0 :(得分:1)

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

django-haystack you can use the build_solr_schema commandmanage.py