为什么我不能在 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.