Solr字段名称中的冒号如何为" fl"参数?

时间:2016-12-22 09:27:44

标签: solr escaping solrj

我在冒号模式中使用冒号字符命名空间字段名称。我们需要使用命名空间字符,因为我们有来自不同来源的数百个字段。不能使用下划线,因为这是在子名称中使用的。

问题似乎是当Solr看到冒号时,它会触发伪字段解析(参见SOLR-2444)。对于字段tika:metadata:height,Solr然后返回400错误,并显示以下消息:

undefined field: "metadata"

我似乎找不到逃避:角色的方法。有人找过吗?

使用反斜杠逃避并不起作用。

我正在使用SolrJ Java客户端。

1 个答案:

答案 0 :(得分:1)

它的语法错误,带有消息 - 无法解析tika:metadata:height

您可以使用\ {:

来逃避\:

但是在你的显示undefined field: "metadata"中,这意味着你的schema.xml文件中没有定义元数据字段,所以检查一下。

在更正错误和语法时,您的查询请求tika:metadata\:height将在字段名称"metadata:height"中搜索字符串值"tika"

<强>标记化

示例:

q=\:title

还因为查询标记化 如果您使用了:

,则会丢弃solr.StandardTokenizerFactory冒号

虽然:已转义,但parsedquery将变为q=title

尝试使用solr.WhitespaceTokenizerFactory