在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代码。 感谢。
答案 0 :(得分:3)
我个人认为在Java代码中正确转义是更好的方法。 ClientUtils.escapeQueryChars将是首选方法。
答案 1 :(得分:2)
“ - ”是查询解析器的特殊字符,用于将某些子句标记为禁止。如果您不想转义此字符,则需要更改查询解析器。
您可能想尝试raw query parser:q={!raw f=nodeId}-1
,但它没有默认查询解析器的功能。实际上,原始查询解析器只允许您运行纯术语查询。