我有一个包含数百万个文档的SOLR实例。模式定义良好(即所有字段都是键入的)。所有的搜索/分面等工作都没有任何问题。
但是,我正在尝试做一些我认为当前版本不支持的新内容。我正在使用Jetty在Windows上运行SOLR 3.5。
为简化问题,我的文档包含以下字段:
标识, 名称, 市, JOBTITLE
假设我有一个示例数据,例如: P Wood,伦敦,董事 J Smith,伦敦,项目经理 D Lock,Brighton,开发人员 K Pracy,伦敦,开发人员
为了举例,假设这是一个允许人们互相找到的匹配系统。还假设Id是唯一的Id。
我想写一个“抽样”查询,它应该找到一组记录,以匹配任何标准的其他记录。
例如,我想定义一个标准:
找到那些与不同城市中不同职位的人匹配的人:
如果上面的模式是RDBMS-SQL表(比方说人物),那么近似查询将是这样的:
SELECT P.Id, ( SELECT COUNT(1) FROM People PI Where PI.Id != P.Id AND PI.City != P.City AND PI.JobTitle != P.JobTitle ) AS FindCount FROM People P
好吧,查询可能不可行,但你明白了。无论如何,还有其他要求,Findcount应该大于x且小于y。
如果SOLR中有可能,或者这不是SOLR的意思,有人可以告诉我。我知道SOLR 4带有一个Join运算符但在我看来更像是一个限制使用的IN子句。例如,考虑到我希望匹配的Id也在上面的查询而不是计数。
答案 0 :(得分:1)
我不认为这在1个查询中是可行的,您最终可能会将“内部选择”作为每个人的单独查询运行