我在 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
关于java - MongoDB Solr 搜索以在单个搜索请求中获取文档关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30092497/