2011-11-18 50 views

回答

0

至於我可以在Django的草垛1.2的源代碼看看。*你不能做到這一點。您可以編寫自己的模式,而不是使用管理命令生成它並使用它。

1

如果您正在使用草堆的build_solr_schema管理命令來創建schema.xml中,請注意,它會自動包括流行的字段類型不同dynamicFields。例如,check out the schema template for Haystack v2.1。 (這看起來像它一直在那裏,因爲草堆V1)

這可以讓你創建你的搜索索引的準備方法動態命名字段。例如,如果您編入索引,可能有一個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類的頂部定義。你可能想在評論中提到這一點。

0

由於@nofinator說,你可以在SearchIndex.prepare方法由SOLR Schema.xml前綴concatinating字段名做到這一點。

默認情況下草垛(當前版本。是2.1.1)附帶像*_s一些默認DynamicField。但是如果你願意,你可以製作你自己的DynamicField。

在我的項目生病讓attr_*領域,其做工精細。

所有你需要做的,就是在Schema.xml 加入這一領域,具有相同的語法,您可以manualy或壓倒一切的非標準草堆做build_solr_schema管理命令。(順便說一句,它的使用非標準的Django渲染模板FNC。所以它很容易。