2012-08-28 199 views
0

索爾支持嵌套文檔嗎?有沒有更好的方法來實現這種文件?索引索引嵌套文檔

<doc> 
    <field name="name">Mr. Test</field> 
    <field name="case"> 
     <field name="link">http://foo.com</field> 
     <field name="date">1-2-1234</filed> 
     <field name="title">My title</filed> 
    </field> 
    <field name="case"> 
     <field name="link">http://foo.com/2/</field> 
     <field name="date">1-2-1234</filed> 
     <field name="title">My title 2</filed> 
    </field> 
</doc> 

我有一個人是多個案件的一部分。這種模式的形式是否與solr合法?不同的人也可以是同一案件的一部分。所以它看起來像一個關係數據庫的任務,但是我使用solr來處理這個項目。

回答

1

較新版本的Solr提供支持嵌套文檔

指數此JSON

[ 
    { 
    "id": "1", 
    "title": "Solr adds block join support", 
    "content_type": "parentDocument", 
    "_childDocuments_": [ 
     { 
     "id": "2", 
     "comments": "SolrCloud supports it too!" 
     } 
    ] 
    }, 
    { 
    "id": "3", 
    "title": "Lucene and Solr 4.5 is out", 
    "content_type": "parentDocument", 
    "_childDocuments_": [ 
     { 
     "id": "4", 
     "comments": "Lots of new features" 
     } 
    ] 
    } 
] 

進入schema.xml中,u必須補充它們到達這裏使用的是「標題」的所有字段, 「CONTENT_TYPE」, 「評論」。參數「childDocuments」是solr注意的一個參數,它理解這是一個子文檔和「content_type」:「parentDocument」是solr的標識符,以便了解這是父文檔。如果我們查詢

"*":"*" 

我們應該查看4個文檔。現在我們可以在Block and join query parsers的幫助下獲得父母或小孩的文件。試試這個查詢

http://localhost:8983/solr/collection_test/select?q={!child%20of=%22content_type:parentDocument%22}title:lucene 

而這一次

http://localhost:8983/solr/collection_test/select?q={!parent%20which=%22content_type:parentDocument%22}comments:SolrCloud 
+0

。在你的JSON格式的一些錯誤。在「_childDocuments_」之後應該有一個「[」: –

+0

@Lijo:thnks ..我改變了它。 – Gunjan

+0

: - 如果我想索引像solr中的下面,我該怎麼做? [{ 「ID」: 「1」, 「COMPANY_ID」: 「1」, 「COMPANY_NAME」: 「COMPANY_1」, 「meta_categories」:[ { 「CAT_ID」: 「1」, 「cat_name」 : 「時尚」 }, { 「CAT_ID」: 「2」, 「cat_name」: 「體育」 } ], 「main_categories」:[ { 「cat_name」: 「1」, 「 cat_name「:」fashion「 }, { 」cat_name「:」2「, 」cat_name「:」sports「 } ] –