【问题标题】:Which special characters need escaping in a solr query?在 solr 查询中需要转义哪些特殊字符?
【发布时间】:2019-04-12 15:33:25
【问题描述】:

更新:认为这个问题通常与 solr 语法有关,而不是特别与 Chef 有关。因此,当我遇到这种与 Chef 合作的情况时,我认为任何与 Solr 合作的人也会经历这种情况......


我正在开发一个与 Chef 服务器的搜索 API 通信以查找特定节点的应用程序。

根据这个http://docs.opscode.com/essentials_search.html#special-characters,看来需要转义一些特殊字符。

注意:我只关心完全匹配的模式,通配符。我知道其中一些字符是通配符的原因。

这是撰写本文时的列表,从上面的 URL 复制而来:

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

但是,当我尝试使用这些字符的各种 knife search 命令时,我看到了不一致的行为。

对于以下示例,我设置了一个标记为+&|!(){}[]^\"~*?:\\" 的节点

这些命令是在 Linux 机器上以 bash shell 运行的:

$ knife search node 'tags:+&|!(){}[]^"~*?:\'
ERROR: knife search failed: invalid search query: 'tags:+&|!(){}[]^"~*?:\'

这符合预期,因为没有任何东西逃脱。现在,按照文档的建议,我用一个 \ 来逃避一切:

$ knife search node 'tags:\+\&\|\!\(\)\{\}\[\]\^\"\~\*\?\:\\'
ERROR: knife search failed: invalid search query: 'tags:\+\&\|\!\(\)\{\}\[\]\^\"\~\*\?\:\\'

奇怪。

任何人都可以对此有所了解,并可能提出一个能够匹配该标签的查询吗?

显然,任何人都不可能拥有包含所有这些特殊字符的属性,但我想更好地了解应该如何转义特殊字符。

谢谢!

【问题讨论】:

  • 也许您在搜索相同但搜索 solr 而不是 chef.. 时会找到更多信息?这就是用于搜索的内容。
  • ! ( ) { } [ ] ^ " ~ * ? : \ 这些都对我有用,但+ - && | | 都失败了
  • @better_use_mkstemp:谢谢。这部分有帮助。我也有点困惑为什么&&|| 被认为是特殊的字符
  • 在阅读了下面@sethvargo 发布的URL 之后,我现在明白为什么+、-、&& 和||被特别解释。它们被认为是布尔运算符。然而,目前还不清楚如何正确地逃避这些。

标签: solr lucene chef-infra knife


【解决方案1】:

【讨论】:

【解决方案2】:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-06
  • 2012-08-23
  • 1970-01-01
  • 2014-05-14
  • 2016-01-14
  • 2014-12-14
  • 1970-01-01
相关资源
最近更新 更多