我在使用 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()
有什么建议吗?提前致谢。
最佳答案
如果您尚未在 Solr 中为集合设置显式架构,并且您正在使用数据驱动配置集(也称为无架构模式),则默认情况下所有字段都是多值的。使用正确的架构并将字段设置为 multiValued="false"
以获得您正在寻找的行为。
对于django-haystack you can use the build_solr_schema
command到manage.py
。
关于django - Django-haystack 使用 Solr 索引列表而不是原始数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49954492/