如何在 Solr 中合并对空值的查询?
How to combine queries for empty values in Solr?
我正在尝试查询具有空字段值的 solr 文档,但无法执行:
假设文档有两个可能为空的字段 name_de
和 name_en
.
如in the solr docs所述查询其中一个工作正常:
-name_de:[* TO *]
但是当我开始组合多个此类查询时,答案却不是我所期望的:
-name_de:[* TO *] OR -name_en:[* TO *]
应该提供类似于我认为的两个查询的联合。然而事实并非如此。我根本不明白答案:在我的例子中,我通过查询 name_de
交付了 1310 份文档,通过查询 name_en
交付了 1319 份文档——如上所示将两者结合起来得到 950 份文档。
据我了解 Solr 文档:
Pure negative queries (all clauses prohibited) are allowed (only as a top-level clause)
这些 "pure negative queries" 无法组合,并且开箱即用的 Lucene 不支持全部功能,但 Solr 的标准查询解析器 "extension" 支持。
但是我一直没能找到相关资源来更清楚地说明空值的正确处理方式,我想知道我的方法是否完全错误。
有人能告诉我如何在 Solr 中正确处理/查询这些空值吗?
PS:
尝试合并 the exists function 也没有成功:调用这些总是交付所有文档,无论它们在 name_de
或 name_en
.
中的内容如何
通常当您"subtracting"结果中的某些内容时,您必须更加具体:
(*:* -name_d:[* TO *]) OR (*:* -name_en:[* TO *])
在您的第一种情况下,*:*
隐式添加在前面,因为这是查询中的唯一术语,您会得到预期的结果。但是,在您的第二种情况下,*:*
只会在第一组文件前面加上前缀,而不是在 OR
.
之后的第二组文件。
显式添加完整的文档集(由 *:*
表示),以便我们在找到与该术语匹配的文档集之前可以减去一些内容。
我正在尝试查询具有空字段值的 solr 文档,但无法执行:
假设文档有两个可能为空的字段 name_de
和 name_en
.
如in the solr docs所述查询其中一个工作正常:
-name_de:[* TO *]
但是当我开始组合多个此类查询时,答案却不是我所期望的:
-name_de:[* TO *] OR -name_en:[* TO *]
应该提供类似于我认为的两个查询的联合。然而事实并非如此。我根本不明白答案:在我的例子中,我通过查询 name_de
交付了 1310 份文档,通过查询 name_en
交付了 1319 份文档——如上所示将两者结合起来得到 950 份文档。
据我了解 Solr 文档:
Pure negative queries (all clauses prohibited) are allowed (only as a top-level clause)
这些 "pure negative queries" 无法组合,并且开箱即用的 Lucene 不支持全部功能,但 Solr 的标准查询解析器 "extension" 支持。
但是我一直没能找到相关资源来更清楚地说明空值的正确处理方式,我想知道我的方法是否完全错误。
有人能告诉我如何在 Solr 中正确处理/查询这些空值吗?
PS:
尝试合并 the exists function 也没有成功:调用这些总是交付所有文档,无论它们在 name_de
或 name_en
.
通常当您"subtracting"结果中的某些内容时,您必须更加具体:
(*:* -name_d:[* TO *]) OR (*:* -name_en:[* TO *])
在您的第一种情况下,*:*
隐式添加在前面,因为这是查询中的唯一术语,您会得到预期的结果。但是,在您的第二种情况下,*:*
只会在第一组文件前面加上前缀,而不是在 OR
.
显式添加完整的文档集(由 *:*
表示),以便我们在找到与该术语匹配的文档集之前可以减去一些内容。