12

为我解决这个问题的最后一个选择是询问 StackOverflow。

我正在尝试创建一个 Solr 查询来获取在其字段之一上具有特定值或没有值的文档...

从理论上讲,这个查询应该有效。

以下是一些信息:

查询:(名称:john)--> 结果计数:15383 //Johns

Query: (name: {* TO *}) --> Result count: 61013 //有名字的人

查询:-(name: {* TO *}) --> Result count: 216888 //没有名字的人

现在,当我使用 OR 运算符在同一查询中使用第一个和第三个查询时,我希望得到 (216888 + 15383) 结果。但是SOLR给出了15383个结果,干脆忽略了第三次查询的效果:

Query: +((name:john) (-(name:{* TO *}))) //这是我使用的查询。

这是 Solr 的错误还是我在查询中做错了?合并两个查询结果是一个额外的解决方案,但如果我可以用一个简单的查询来完成,我不想做额外的代码实现。

任何帮助,将不胜感激。

4

4 回答 4

23

(-name:[* TO *] AND *:*) OR name:john

于 2012-02-06T23:43:52.417 回答
1

你也可以像这样使用它。

&fq=name:john OR !name:['' TO *]
于 2015-02-09T07:44:23.273 回答
0

您可以在下面使用来获取 null 和 rest 的结果

-name:[* TO *] OR *:*
于 2021-06-09T15:49:40.377 回答
-1

尝试以下查询 -

q=(name:john OR -(name:[* TO *]))
于 2011-10-06T09:20:16.667 回答