我们在模式中存储了一个路径,以斜线分隔,并且它也以斜线开头。根据这篇文章,solr 将查询开头的斜杠解释为 4.0 版之后的正则表达式,这意味着我们需要转义斜杠。
但是SolrTemplate.queryForPage(Query, Class)并没有转义斜线,所以自然的解决方案是使用上面链接中建议的 QueryParser.escape(searchTerm) 。
但是,这将添加一个反斜杠来转义斜杠,并且该反斜杠将被 SolrTemplate 转义,从而导致查询中出现转义的反斜杠 - 这不会给出任何结果
为了清楚起见,我将添加几个示例:
查询没有任何转义:
q=paths:/myrootpath&start=0&rows=10
使用手动转义斜线进行查询(QueryParser.escape(String)):
q=paths:\\/myrootpath&start=0&rows=10
我需要的查询:
q=paths:\/myrootpath&start=0&rows=10
我不确定这是一个错误还是有意为之,因为据我所知,pre-4.0-solr 不需要转义斜杠
那么 spring-data-solr 中是否有方法可以禁用查询的字符转义,或者修改哪些字符被转义?