2010-02-23 64 views
4

例如,假設我有以下方面:的Solr/Lucene的:索引方面值

顏色

  • 紅(7825)
  • 橙色(2343)
  • 綠色(843 )
  • 藍色(5412)

在我的數據庫中,顏色是一個表格,每種顏色都有一個主鍵和一個名稱/值。

使用Solr/Lucene進行索引時,在所有我見過的例子中,索引值都是索引而不是主鍵。所以,如果我通過紅色過濾器,我會得到像下面這樣:

http://www.example.com/search?color=Red

我想知道,是否是明智的,而不是指數的主鍵和顯示時,從數據庫中檢索值方面值?所以,我反而會得到這樣的:

http://www.example.com/search?color=1

「1」代表紅色的主鍵。我想知道我是否應該採取這種方法,因爲我的許多方面的價值經常發生變化,但主鍵保持不變。另外,該索引需要與數據庫同步。

對此有任何經驗嗎?你如何看待這會影響性能?

在此先感謝!

+0

簡答:是的,沒關係。長回答:當我回家時:-) – 2010-02-23 14:18:53

回答

1

如果您期望您的實體頻繁更改,則更容易索引ID,並且當您得到結果時,請在數據庫中查找以獲取顏色的名稱。這種方式改變顏色不會要求索引中更新受影響的文檔。

在我們的系統中,我們將索引ID的Lucene而不是實體的名稱,這正是由於您陳述的原因。另外,我們的實體有一些與它們相關的屬性,這些屬性沒有編入索引,所以我們必須打開數據庫才能獲取它們。

就性能而言,ID的刻面不會明顯變慢或變快。就數據庫查詢而言,這應該不是什麼大問題,特別是如果你一次只能拉下數十個方面的話。如果它成爲一個問題,你總是可以使用緩存來加速。