【问题标题】:Djando-haystack indexes lists instead of raw data with SolrDjango-haystack 使用 Solr 索引列表而不是原始数据
【发布时间】:2018-04-21 09:54:38
【问题描述】:

我遇到了一个关于 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"]},

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

这是我的索引定义:

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

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

【问题讨论】:

标签: django solr lucene django-haystack pysolr


【解决方案1】:

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

对于django-haystack you can use the build_solr_schema commandmanage.py

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 2015-11-02
    • 2014-02-11
    相关资源
    最近更新 更多