我在冒号模式中使用冒号字符命名空间字段名称。我们需要使用命名空间字符,因为我们有来自不同来源的数百个字段。不能使用下划线,因为这是在子名称中使用的。
问题似乎是当Solr看到冒号时,它会触发伪字段解析(参见SOLR-2444)。对于字段tika:metadata:height
,Solr然后返回400错误,并显示以下消息:
undefined field: "metadata"
我似乎找不到逃避:
角色的方法。有人找过吗?
使用反斜杠逃避并不起作用。
我正在使用SolrJ Java客户端。
答案 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