【发布时间】:2011-07-25 00:50:23
【问题描述】:
我们如何在 SOLR 查询中在两个多值字段之间使用 AND 子句?
例如;下面是数据库表的图片
求职者 ID 公司 ID 电子邮件发送时间
=========== =========== ==============
123 ABC 2011 年 7 月 22 日
123 XYZ 2011 年 7 月 1 日
现在在 Sql 中,如果我查询
CompanyID = "ABC" AND EmailSentOn > 2011 年 7 月 14 日(它将返回 TRUE)
CompanyID = "XYZ" AND EmailSentOn > 14-Jul-2011(它将返回 FALSE)
我们将如何在 SOLR 中处理它?以下是我的 SOLR Collection 的图片,我是如何存储数据的
{int name="jobseekerid"}123{/int}
.....................
.....................
.....................
{arr name="CompanyID"}
{str}ABC{/str}
{str}XYZ{/str}
{/arr}
{arr name="EmailSentOn"}
{str}2011-07-22T17:44:00Z{/str}
{str}2011-07-01T05:10:00Z{/str}
{/arr}
我如何在 SOLR Now 中查询 Jobseeker 123。因为对于 SOLR,CompanyID 和 EmailSentON 之间没有任何关系。这需要他们两个独立的实体。
当我们查询公司 ID 为“ABC”且 EmailSentOn >= 2011 年 7 月 14 日时,它将返回 TRUE,当我们说 CompanyID 为“XYZ”且 EmailSentOn >= 2011 年 7 月 14 日时,它将再次返回 TRUE因为 SOLR 会看到,公司 ID“XYZ”是否存在,并且“发送的电子邮件”中的任何日期大于 7 月 14 日,那么它将返回 true。
但是我们需要它来检查 CompanyID "XYZ" 那么公司 XYZ 日期是否大于 7 月 14 日。这不是,因为 XYZ 发送的电子邮件日期是“01-Jul”。所以它应该为此返回 false。
我希望你明白我的意思。谁能指导我如何在 SOLR 中处理这个问题?
【问题讨论】:
标签: solr