2013-10-19 55 views
2

基於關係數據庫的比喻,我想知道Solr如何適應。 根據我目前的想法,Solr中的「文檔」與sql中的「rows」類似(如果我的sql表有100行,我需要在solr中插入100個文檔),「cores」類似於「tables」(或數據庫?!?)。SOLR中的「文件」和「核心」是什麼意思?我該如何使用它們?

問題是: 如果我有2組無關的信息,比如我們說汽車信息表(id,名稱,系列,顏色,描述)以及帶有用戶信息(id,姓名,地址,年齡,性別),我在哪裏插入這些東西在Solr? 我製作了2個內核(core_car,core_user)並使用coresponding表中的文件填充它們中的每一個? 或者我做1個核心(core_general),並從兩個表中插入所有文件(以某種方式分開,我不知道如何)。

在2核心的第一種情況下,我感覺我正在創建2個數據庫,每個數據庫中有1個表(矯枉過正)。 在第二個我感覺就像我創建一個表與所有無關的領域一起發展(如果存在某種形式的分離 - 我目前還不知道這種情況將不會是這種情況)。

請確認或不要我的推定。 預先感謝您。

回答

1

非常感謝您在發佈問題之前進行了探索。這是我的看法。

Solr文檔:可能更適合感知此概念的方法是根據結果進行思考。執行搜索查詢後,每個Solr文檔都不過是結果集中的一個結果條目。

如果您是索引維基百科,則每篇文章都是Solr文檔。當您搜索「排序算法」時,您希望看到的結果是「冒泡排序」,「合併排序」等。它們中的每一個都是文章,Solr文檔以及結果集中的結果。

如果你想讓你回到rdbms概念,我想說,每個搜索結果(即一個Solr文檔)可能是一個SQL查詢的結果集中的一行。該行可以是單個表中的一行,也可以是JOINed表中的一行。

Solr Core不過是一個lucene索引的封裝。每個Solr網絡應用都可以運行多個Solr內核。

加快理解的最佳方法是避免將Solr中的概念與RDBMS相關聯。

探索What Solr offers that RDMBS doesn't(有效)

這裏還有一個鏈接,可以幫助你:Solr Terminology

你的用例

的Solr/Lucene的的好處是靈活的模式或者我會說沒有模式。每個文檔可以具有與索引的先前文檔完全不同的字段和屬性。

只要它們是可縮放,就可以在同一個lucene索引(您的案例中的Solr Core)中擁有不同類型的文檔(汽車,人物等),這完全沒有問題。

例如,如果您擁有500萬個汽車參賽作品和30億人蔘賽作品,那麼將它們分開編制是有意義的。如果你有100萬人和500萬輛汽車,你可以把它們放在同一個索引中,並且包含一個包含實體類型的標識符字段。

你的問題是非常主觀的。不是每個人都會同意我所說的。這取決於決定一個核心還是多個核心的更多因素。

例如,

  1. 做這兩個實體(個人和汽車)互相補充,作爲一個邏輯塊,以支持產品的功能嗎?
  2. 是否有任何情況下您必須爲查詢獲取兩種類型的結果。
  3. 更新每種類型的實體的頻率。 (Solr沒有更新選項,只是刪除&重新添加。)
  4. 它們屬於不同的產品功能嗎?
  5. 他們是否擁有不同的團隊等等。
相關問題