7

在 solr 中,我想搜索一个带有负数的字段,例如 nodeId:-1。在 schema.xml 中,我这样定义它: <field name="nodeId" type="int" indexed="true" stored="true" />

solr 在使用“nodeId:-1”进行搜索时抛出错误:org.apache.lucene.queryParser.ParseException: Cannot parse 'storeId:-1': Encountered ""-" "-"" at line 1, column 8 .期待以下之一:“(”......“*”........................“[”......“{”......

我必须使用 storeId:\-1 或 storeId:"-1" 搜索才能获得答案。

现在的问题是:我可以修改任何 solr 配置文件以在没有任何转义字符的情况下进行搜索吗?或者在不修改java代码的情况下解决这个问题的另一种方法。谢谢。

4

2 回答 2

3

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

于 2011-11-22T14:04:19.483 回答
2

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

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

于 2011-11-22T13:00:53.247 回答