Solr - 根据条件执行不同的查询

时间:2018-05-08 13:06:17

标签: solr

我有50个值字段,50个布尔值和一个日期字段。为了符合新的GDPR标准,我需要使某些字段无法搜索。在我的情况下,困难的部分是,每个记录需要不可搜索的字段不同。因此,在一种情况下,字段2和5可能受到保护,而在另一个字段中,3和7受到保护。这是布尔人知道的:每个值字段也有一个布尔值,用于定义该字段是否受保护。

所有这些仅适用于日期字段仍在将来的情况。当日期是过去的日期,或者根本没有日期时,无论布尔值如何,该记录的所有字段都可以搜索。

我想到的是每条记录执行不同的查询,具体取决于该记录的日期字段是否在将来。 if(date> today) - > QUERY1 别的 - > QUERY2

其中query1单独检查每个字段,同时考​​虑匹配的布尔值。这有可能,怎么样?

1 个答案:

答案 0 :(得分:0)

对于第一个条件 - 在日期过去之前和之后使用单独的字段进行搜索(如果仍然可以存储值 - 我不太熟悉详细的GDPR要求)。

即。拥有field_1field_1_before_date - 如果在索引文档时布尔值为true,则只提交field_1_before_date的值。

发出两个单独的查询,一个用于将来获取文档,另一个用于获取过去的文档 - 在第一个中,您将查询的字段限制为field_1_before_date,而在第二个查询中使用field_1 1}}而不是。

您可以使用_query_ - Using nested queries in Solr

组合这些内容
q=yourfirstquery OR _query_:"your second query"

..应该有效,除非对使用OR进行组合有限制。