为什么我不能在 Retrieve and Rank Solr 查询中使用冒号?
Why can't I have a colon in a Retrieve and Rank Solr query?
如果我向 Retrieve and Rank (Solr) 发送自然语言查询,如果查询包含冒号,它将 return 出错。它似乎试图将冒号之前的单词解释为字段名称。
有什么办法可以防止这种情况发生吗?还有其他类似的字符我应该注意吗?
您必须转义冒号 - 如果您的 Solr 库没有自动为您执行此操作。与大多数其他情况一样,转义使用 \
,因此 foo\:bar
应该有效。另一种选择可能是将值用引号引起来 (field:"foo:bar"
).
您需要处理的字符列表位于 http://www.ibm.com/watson/developercloud/doc/retrieve-rank/plugin_query_syntax.shtml - 它位于页面底部 "Reserved characters" 标题下。 (这也包括如何处理它们)
其中包括:
Colon (:)
Escape a colon in a query with a backslash.
Double quotation marks (")
Escape double quotation marks in a query with a backslash in field queries.
Backslash (\) Escape character
Escape a backslash in a query with another backslash.
如果我向 Retrieve and Rank (Solr) 发送自然语言查询,如果查询包含冒号,它将 return 出错。它似乎试图将冒号之前的单词解释为字段名称。
有什么办法可以防止这种情况发生吗?还有其他类似的字符我应该注意吗?
您必须转义冒号 - 如果您的 Solr 库没有自动为您执行此操作。与大多数其他情况一样,转义使用 \
,因此 foo\:bar
应该有效。另一种选择可能是将值用引号引起来 (field:"foo:bar"
).
您需要处理的字符列表位于 http://www.ibm.com/watson/developercloud/doc/retrieve-rank/plugin_query_syntax.shtml - 它位于页面底部 "Reserved characters" 标题下。 (这也包括如何处理它们)
其中包括:
Colon (:)
Escape a colon in a query with a backslash.Double quotation marks (")
Escape double quotation marks in a query with a backslash in field queries.Backslash (\) Escape character
Escape a backslash in a query with another backslash.