2015-04-07 85 views
0

我有一個要求,我必須處理SOLR中的一對多關係。 說一個實體Person可以有多個名字(名字,姓氏,名字類型)。現在的問題是,如果我在我的schema.xml中創建姓名&名稱類型作爲多值字段,它將無濟於事。因爲我無法確定哪個名字將與哪個名稱關聯姓氏和姓名的類型。 我想要的是如果我有一個人說P1有2個名字[name_type1,firstName1,lastName1] & [name_type2,firstName2,lastName2]。 現在,如果我做一個全文搜索firstName1,那麼我應該回來P1。 有沒有辦法在SOLR中處理這個用例?處理solr中的一對多關係

+0

您的搜索要求是什麼?你只是想要一個自由文本搜索名稱,或者你需要能夠搜索特定的名稱類型,例如[特定名稱類型] ='約翰史密斯'? – prunge

+0

它可以通過在solr中使用分組... –

+0

@prunge請參閱編輯 –

回答

0

如果你的文件看起來像以下:

name.first.[type] = John 
name.last.[type] = Smith 

可以定義爲動態字段:

<dynamicField name="name.first.*" type="text" indexed="true" stored="true" /> 
<dynamicField name="name.last.*" type="text" indexed="true" stored="true" /> 

,並有copy field definitions在你的配置:

<copyField source="name.first.*" dest="text" maxChars="256" /> 
<copyField source="name.last.*" dest="text" maxChars="256" /> 

這將將所有名字複製到可以搜索的「文本」字段中。

有了這種結構,如果字段值被存儲(而不是索引),那麼它將有可能重構人文檔中的所有名稱。