我想要一些真实的编程场景,我们可以使用这个 solr util 方法,即 SolrUtils::escapeQueryChars()。
现在我使用它从 solr 中的查询中转义查询字符。
q:+人气:[10 TO *] +section:0
我正在使用
escapeQueryChars(+popularity:[10 TO *] +section:0)
但是逃跑后我无法得到结果。
SolrUtils::escapeQueryChars 通常用于转义 Query 中在 Solr 中具有特殊含义的字符。
当前的字符列表+ - && || ! ( ) { } [ ] ^ " ~ * ? : \
在 Solr 中具有特殊含义,如果不转义,行为会有所不同。
例如,如果您正在搜索5*
除非转义,它将表现为通配符搜索并返回带有从 . 开始的标记的结果5
。
它只能用于查询值。
大多数时候,您将接受来自用户的查询。因此,必须转义这些字符以避免异常
用户搜索查询可以是:“Thomas' Calculus (12th Edition)” 上面的用户查询肯定会导致不需要的结果
$query = new SolrQuery('product_name:'.SolrUtils::escapeQueryChars($userQuery));