在SOLR查询中排除具有空值的字段

时间:2016-12-17 13:01:35

标签: solr edismax dismax

我正在尝试向使用SOLR进行查询的API发出网址请求。

我有很多数据包含许多包含不同值的字段,而且这些字段中的一些通常会包含空值。

我想进行查询,检索特定字段不为空的所有数据,但包含一些实际值。

例如,每个条目都包含一个名为tags的字段,这是一个标记数组。标签可以是例如单词test。

我尝试过-tags:[* TO *],这会导致返回标记为null的所有数据集。

我还尝试过标签:[* TO *],它返回所有数据,标签为空,标签实际设置在哪里。

我一直在尝试各种各样的事情来处理最后一个案例,其中只返回带有值的标签,我希望你能帮助我吗?

2 个答案:

答案 0 :(得分:0)

andAND不同 - 这是您必须在查询中使用的分隔符。

您的查询可能只是搜索(默认字段中包含and的文档)或(deleted:false)或(tags:[* TO *])。

使用带有空格的适当分隔符来组合多个条件。我还建议对任何静态的查询(例如fq)使用过滤查询(deleted:false),因为这样可以将查询与实际查询分开缓存。

答案 1 :(得分:0)

您的问题有点令人困惑,因为您使用"检索数据等字词"和"检索字段"这可能令人困惑。在SOLR中,查询指定检索哪些文档(或记录)。

如果您想要所有在该字段中具有某些价值的文档"标记",您可以使用

(tags:*)

如果您想要所有在该字段中没有值的文档"标记",那么您可以使用:

(*:* AND NOT tags:*)  

(*:* AND -tags:*)