MongoDB Solr 搜索以在单个搜索请求中获取文档关系

MongoDB Solr search to fetch document relationships in one single search request

我在 mongodb 中有两个或更多集合,它们使用 mongo-solr 连接器复制到 solr 索引。为了解释我面临的问题,让我们以员工和部门示例的传统示例为例(我知道它是面向文档的数据库,我可以将部门嵌入到员工文档中,但请允许我用这个简单的示例来解释我的问题):

员工文件:

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

部门文件:

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

假设以上两个文档在员工文档中使用部门的对象 ID ref 链接。现在 mongo-solr 连接器按原样复制了这些结构,让我们假设所有字段都已编制索引并存储。

现在这是我的问题(和问题所在):

如果我按员工名字(或姓氏)搜索 solr 索引,我应该以这样的方式返回结果,即 solr 搜索响应应包含 "departmentName" 而不是 Department ObjectId 引用,并且这应该发生在来自客户端的单个搜索请求上。

如何使用 Solr api 执行此操作?

提前致谢。

理想的解决方案(从 Solr 的角度来看)当然是以非规范化形式将数据存储在 Solr 中。但是,如果这不是一个可行的选择,您可以查看 Join query Parser。

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

您将按照以下方式执行查询(未测试):

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