2011-11-22 22 views
0

我有一個相當「複雜」的場景,我需要能夠處理來自n個來源的信息 - 每個來源都有自己的結構。爲了數據轉換的目的,我構建了一個靈活的「黑盒子」,可以描述給定源可用的列/屬性。它還可以創建多值屬性,而任意數量的列可以被聚合並索引到Solr字段中。SolrNet適當的映射方法

我希望能夠儘可能靈活地處理這個問題,因此我想使用通過SolrNet提供的各種映射方法。讀過「Solr映射文檔」後,似乎「完全鬆散的映射」可能提供我正在尋找的內容。

現在,爲了確保我正確理解這一點:我是否仍然可以提供「str_title」作爲詞典中的鍵,並且將「A標題」作爲詞典中的值提供,並且它會正確映射到上面提到的聲明?

我很感激,如果有人可以幫助我,因爲這將會對如何繼續影響...

希望這是有道理:)

回答

2

是完全鬆散的映射會爲您提供能力按照您所描述的定義映射並獲得預期的Solr索引結果。

編輯:

你可以做到以下幾點,這將映射兩側...

<dynamicField name="str_*" type="string" ... /> 

然後映射爲以下,這將兩個插入和檢索文檔工作來自索引。

傳統制圖:

[SolrField("str_")] 
Dictionary<string, object> myDynamicStrings { get; set; } 

然後,您可以添加到字典中的項目,就像以下:

myDynamicStrings.Add("title", "A title"); 

完全鬆散映射:

Dictionary<string object> myDynamicFields { get; set; } 
    myDynamicFields.add("str_title", "A title"); 

釷e同樣適用於解析/訪問Solr查詢的結果。

+0

嗨,佩奇!聽起來不錯,但我想添加一些東西到我原來的發佈,因爲它似乎已經消失:(我假設schema.xml文件包含dynamicField聲明映射「str_ *」,例如,一個類型=「字符串」 。所以你要確認的是,如果我提供了key =「str_title」和value =「一個標題」,這將通過SolrNet提供的鬆散映射成功地映射出來? – Kodo

+0

請參閱編輯示例...另外,如果你編輯你的問題並在你的代碼片段周圍打上「#」,他們會顯示出來 –

+0

@PaigeCook:這個答案是正確的,但我認爲Kodo詢問的是http://code.google.cn中描述的「完全鬆散映射」選項。 .com/p/solrnet/wiki/Mapping#Fully_loose_mapping,即直接使用字典,而不是帶有SolrField屬性的自定義類(是的,這也可以按預期工作) –