2015-05-07 60 views
3

我有兩個或更多的mongodb集合,它們使用mongo-solr連接器複製到solr索引。爲了解釋我的問題,我正在面對以員工&部門爲例的傳統示例(我知道它是面向文檔的DB &我可以將部門嵌入到員工文檔中,但請允許我用這個簡單的示例來解釋我的問題):MongoDB Solr搜索在單個搜索請求中獲取文檔關係

員工文件:

{ 
    "_id": ObjectId(..), 
    "firstName": "John", 
    "lastName": "David", 
    "departMent": ObjectId(..) - a DBRef for department document 
} 

部文件:

{ 
    "_id": ObjectId(..), 
    "departmentName": "Marketing" 
} 

比方說,使用日上述兩個文件是員工的文檔鏈接電子部門的對象ID參考。現在,mongo-solr連接器按照原樣複製這些結構,並假設所有字段都被索引並存儲。

現在,這裏是我的問題(&問題):

如果我搜索通過員工的firstName(或lastName的)Solr的指標,我應該得到返回結果以這樣的方式,Solr的搜索響應應當包括「departmentName」而不是Department ObjectId引用,並且這應該發生在源自客戶端的單個搜索請求上。

我該如何使用Solr API?

在此先感謝。

回答

1

當然(從Solr的角度來看)的理想解決方案是將數據以非規範化的形式存儲在Solr中。但是,如果這不是一個可行的選項,你可以看一下Join查詢解析器。

https://cwiki.apache.org/confluence/display/solr/Other+Parsers#OtherParsers-JoinQueryParser

你會被執行沿着線(未測試)查詢:

q={!join from=department to=departmentName}lastName:David AND departmentName:Marketing 
+0

感謝FUU。還有另一個stackoverflow線程,我剛剛在這裏找到:https://stackoverflow.com/questions/12665797/is-solr-4-0-capable-of-using-join-for-multiple-core 您也正在確認它使用連接查詢!非常感謝/ – techcraver