SOLR分析查询

时间:2012-01-11 00:55:01

标签: join solr analysis

我有一个包含数百万个文档的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也在上面的查询而不是计数。

1 个答案:

答案 0 :(得分:1)

我不认为这在1个查询中是可行的,您最终可能会将“内部选择”作为每个人的单独查询运行