Solr 的 Lucene 查询中的禁用字符列表

List of forbidden character in Lucene query for Solr

我在 Riak 数据库上安装了 Solr 搜索引擎。 当我尝试使用以下查询实现搜索时:

my_field:#

我是来自 Solr

的配对查询错误

我也试过如下查询

my_field:"#"

编辑:

我终于找到了 # 字符的解决方案。 (通过使用 URI 代码对其进行编码 %23)。

Solr 的Lucene 查询中是否有完整的禁用字符列表?

# 的问题在于它在 urls 中具有特殊含义 。所以你的浏览器根本不会将它发送到 Solr 服务器。 # 表示一个本地锚点,它之后的任何内容都不会发送到服务器。

因此,如果您有一个 HTTP 查询字符串,例如 ?q=field:#<whatever>,Solr 将从您的浏览器接收的唯一内容是 ?q=field:。这不是一个有效的查询。

这与必须转义哪些字符无关在 Solr(或 Lucene)的查询语法中

你的问题不是“#”是 Solr 查询中的禁止字符,而是你运行查询的方式——使用浏览器,可能来自 Riak 的内置 Solr 控制台。

此字符在 URL 中发送时需要编码(参见 Percent-encoding in a URI, RFC 3986)。在这种情况下,您的解决方案是正确的。完整列表是:

! # $ & ' ( ) * + , / : ; = ? @ [ ]

但是,根据最新的 Solr Ref Guide Escaping Special Characters,在 Solr 查询中并不禁止:

+ - && || ! ( ) { } [ ] ^ " ~ * ? : /

以编程方式发送查询时不应该出现此问题。