django haystack SOLR配置中的dynamicField

django haystack SOLR配置中的dynamicField,solr,django-haystack,Solr,Django Haystack,如何配置search_index.py为django haystack中的动态字段编制索引。我使用SOLR作为haystack的搜索引擎。据我在django haystack 1.2的源代码中所见。*你不能这样做。您可以编写自己的模式,而不是使用管理命令生成模式并使用它。据我在django haystack 1.2的源代码中所见。*您不能这样做。您可以编写自己的模式,而不是使用管理命令生成模式并使用它。如果您使用Haystack的build\u solr\u schema管理命令来创建schem

如何配置search_index.py为django haystack中的动态字段编制索引。我使用SOLR作为haystack的搜索引擎。

据我在django haystack 1.2的源代码中所见。*你不能这样做。您可以编写自己的模式,而不是使用管理命令生成模式并使用它。

据我在django haystack 1.2的源代码中所见。*您不能这样做。您可以编写自己的模式,而不是使用管理命令生成模式并使用它。

如果您使用Haystack的
build\u solr\u schema
管理命令来创建schema.xml,请注意,它会自动包含各种流行字段类型的动态字段。例如(这看起来像是从Haystack v1开始就存在了。)

这允许您在搜索索引的prepare方法中创建动态命名的字段。例如,如果您正在为可能有一个id字符串的注释编制索引,以供不断变化的合作伙伴组使用,则可以执行以下操作:

def prepare(self, obj):
    self.prepared_data = super(NoteIndex, self).prepare(obj)
    for (partner_name, partner_id) in get_partners():
        self.prepared_data['%s_s' % partner_name] = partner_id
    return self.prepared_data
这里的关键是字段名以“\s”结尾,根据模式,它是字符串类型的动态名称


不幸的是,这些动态合作伙伴字段没有在SearchIndex类的顶部明确定义。您可能希望在评论中提到这一点。

如果您使用Haystack的
build\u solr\u schema
管理命令来创建schema.xml,请注意,它会自动包含各种流行字段类型的动态字段。例如(这看起来像是从Haystack v1开始就存在了。)

这允许您在搜索索引的prepare方法中创建动态命名的字段。例如,如果您正在为可能有一个id字符串的注释编制索引,以供不断变化的合作伙伴组使用,则可以执行以下操作:

def prepare(self, obj):
    self.prepared_data = super(NoteIndex, self).prepare(obj)
    for (partner_name, partner_id) in get_partners():
        self.prepared_data['%s_s' % partner_name] = partner_id
    return self.prepared_data
这里的关键是字段名以“\s”结尾,根据模式,它是字符串类型的动态名称

不幸的是,这些动态合作伙伴字段没有在SearchIndex类的顶部明确定义。您可能希望在评论中提到这一点。

比如说,您可以在
中这样做。准备
SearchIndex
类的
方法,方法是将字段名与SOLR
Schema.xml
中的前缀连在一起

默认情况下,Haystack(当前版本为2.1.1)附带一些默认的动态字段,如
*\u
。但如果你愿意,你可以建立自己的动态场

在我的项目中,我将使
attr.*
字段及其工作正常

您所需要做的就是添加这个字段,在
Schema.xml
您可以手动或覆盖standart Haystack
build\u solr\u schema
management命令。(顺便说一句,它使用的是standart django渲染模板fnc。因此非常简单。

比如说,你可以在
中完成这项工作。准备
搜索索引的
方法,方法是将字段名与SOLR
Schema.xml
中的前缀连在一起

默认情况下,Haystack(当前版本为2.1.1)附带了一些默认的DynamicField,如
*\u
。但是如果需要,您可以创建自己的DynamicField

在我的项目中,我将使
attr.*
字段及其工作正常

您所需要做的就是添加这个字段,在
Schema.xml
您可以手动或重写standart Haystack
build\u solr\u schema
management命令(顺便说一句,它使用standart django渲染模板fnc。因此非常简单