如何在solr中搜索负数?

时间:2011-11-22 03:18:49

标签: search solr negative-number

在solr中我想搜索一个带有负数的字段,如nodeId:-1。 在schema.xml中,我将其定义如下:     < field name =“nodeId”type =“int”indexed =“true”stored =“true”/>

当使用“nodeId:-1”进行搜索时,

solr抛出错误:     org.apache.lucene.queryParser.ParseException:无法解析'storeId:-1':在第1行第8列遇到“” - “” - “”。期待以下之一:“(”......“*”。 ...... ...... ......“......”{“......”

我必须使用storeId:\ - 1或storeId:“ - 1”进行搜索才能得到答案。

现在的问题是: 我可以修改任何solr configration文件进行搜索而不使用任何转义字符吗?或者另一种方法来解决这个问题而无需修改java代码。 感谢。

2 个答案:

答案 0 :(得分:3)

我个人认为在Java代码中正确转义是更好的方法。 ClientUtils.escapeQueryChars将是首选方法。

答案 1 :(得分:2)

“ - ”是查询解析器的特殊字符,用于将某些子句标记为禁止。如果您不想转义此字符,则需要更改查询解析器。

您可能想尝试raw query parserq={!raw f=nodeId}-1,但它没有默认查询解析器的功能。实际上,原始查询解析器只允许您运行纯术语查询。