2012-10-01 83 views
1

我也在Our Umbraco community網站上詢問了以下問題,但到目前爲止我還沒有運氣。Lucene SearchResult.Fields集合缺少一些屬性

我有一個任務,我需要爲媒體圖像文件手動添加數據庫記錄,這將出現在我們的客戶端的Umbraco網站中。

我的SQL包括:

  • 添加在umbracoNode記錄的圖像。
  • 添加記錄在cmsContent
  • 在cmsContentXml
  • 添加記錄cmsPropertyData對圖像的umbracoFile,umbracoWidth,umbracoHeight,umbracoBytes,umbracoExtension

添加記錄執行上面的後,並登錄到一把umbraco ,我可以在媒體區域看到圖像,並且一切都很美觀。

問題是當我想顯示該圖像時,調用@ Model.MediaById()(在Razor文件中) - 由於未設置img'src'屬性,因此基本上不顯示圖像。

我已經穿過Umbraco代碼並發現了問題。基本上,當代碼使用Lucene搜索媒體(ExaminedBackendMedia.GetUmbracoMedia())時,它確實找到了圖像文件,但是SearchResult缺少一些字段。例如,字段集合中不會出現cmsPropertyData的「umbraco *」屬性。當我通過另一個圖像(手動添加的圖像)的代碼時,我可以在字段集合中看到額外的5個屬性 - 包括所有的「umbraco *」屬性。

所以我可以看到我在這裏缺少數據。基本上SearchResult對象缺少一些字段。有人可以建議我可能錯過了什麼嗎?爲什麼Lucene沒有選擇通過SQL腳本添加的「umbraco *」屬性?

+0

如果您重新發布所有節點,然後執行代碼,那麼手動添加內容的缺失字段? –

+0

是的,我添加到cmsPropertyData(例如「umbracoWidth」)的所有字段都從SearchResult.Fields中丟失。這對我說,我錯過了一個步驟,因爲Lucene沒有拿起這些領域。 –

+0

哦,堅持下去,我只是注意到你提到「重新發布所有節點」。這個過程究竟是什麼? –

回答

1

您需要確保重新發布節點,這將從您創建的數據庫條目中獲取它們,並將它們放入umbraco在提供數據時實際使用的XML緩存中。