solr查询中的布尔值NOT

时间:2008-11-07 05:49:14

标签: solr

如何使用布尔NOT概念从Solr中选择/删除所有文档?

即。如何删除Solr的所有文件,其ID不是以A59开头的?

6 个答案:

答案 0 :(得分:63)

使用-表示NOT

例如,要查询ID不是以A59开头的文档,查询将为:-id:A59*,即:/solr/select/?q=-id:A59*

要按查询删除,请按照指定的here将删除邮件中的查询发布到更新处理程序。

编辑:NOT(全部大写)也可以用作布尔运算符

答案 1 :(得分:9)

感叹号也适用于NOT,所以:

/solr/select/?q=!id:A59*

应该适用于上述情况。

答案 2 :(得分:1)

我不相信查询的否定删除有效。查看此Jira票证:https://issues.apache.org/jira/browse/SOLR-381

他们确实说有一个解决方法在一个前缀:,但我没有任何运气。

这不起作用(与使用NOT相同) java -Ddata = args -jar /opt/solr/example/exampledocs/post.jar“-userid:*” java -jar /opt/solr/example/exampledocs/post.jar * .xml

添加a:给出语法错误(与使用NOT相同) java -Ddata = args -jar /opt/solr/example/exampledocs/post.jar“: - userid:*” java -jar /opt/solr/example/exampledocs/post.jar * .xml

SimplePostTool:版本1.4 SimplePostTool:将args张贴到http://localhost:8983/solr/update .. SimplePostTool:FATAL:Solr返回错误#400解析Lucene查询时出错 SimplePostTool:版本1.4

答案 3 :(得分:0)

在删除之前请确保您所指的ID是字符串,并且绝不会由两个术语组合形成。 我这样做的方法是从脚本中读取solr中的数据并进行单个删除或批量删除,因为它可以更好地控制和验证每个ID,从而降低错误删除的风险 于是 1使用从脚本中读取solr中的数据 / solr的/选择/ Q = ID:A59 *

2验证并验证ID

3一次删除它们或一次删除一组10个

此致

拉​​杰特

答案 4 :(得分:0)

正如Mauricio所述:

使用 - 符号表示要在查询中排除的内容。 以下两个查询将删除除以A59开头的所有文档。

GET http://<url>/solr/<core>/update?stream.body=<delete><query>-id:A59*</query></delete>
GET http://<url>/solr/<core>/update?stream.body=<commit/>

第一行执行删除操作。 第二行执行提交。

答案 5 :(得分:0)

在文件前面使用 - 符号表示排除该特定值。它会给出 NOT Equal

等结果

以下是示例url查询字符串所在的位置。我保留了&#34; &amp; fq = -HQ_City_Code:MEL &#34;,

它会跳过所有 HQ_City_Code MEL 的结果。

http://localhost:8983/solr/HQ_SOLR_Hotels/select?q=*:*&fq=HQ_National_Code:TH&fq=HQ_TYPE:hotel_EN&fq=HQ_Country_Code:AU&**fq=-HQ_City_Code:MEL**&wt=json&indent=true