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