路径分隔符是否确实需要在过滤器查询中转义,而不需要在solrj的facet前缀中转义?

路径分隔符是否确实需要在过滤器查询中转义,而不需要在solrj的facet前缀中转义?,solr,solrj,Solr,Solrj,在由solrj支持的java应用程序中,我需要在文档路径上添加函数,这些路径在索引时由PathHierarchyTokenizer标记 在研究预期结果没有出现的原因时,我注意到我想要搜索的路径需要在fq参数中正确地进行java转义,即“/”->“/”(“\/”在java中)。因此query.toQueryString()打印出fq=path\u substant\u path%3A%5C%2Fhome%5C%2Fuser1%5C%2FTestDir 所以我有点困惑,因为当转义“/”时,facet

在由solrj支持的java应用程序中,我需要在文档路径上添加函数,这些路径在索引时由PathHierarchyTokenizer标记

在研究预期结果没有出现的原因时,我注意到我想要搜索的路径需要在fq参数中正确地进行java转义,即“/”->“/”(“\/”在java中)。因此
query.toQueryString()
打印出
fq=path\u substant\u path%3A%5C%2Fhome%5C%2Fuser1%5C%2FTestDir

所以我有点困惑,因为当转义“/”时,facet前缀不起作用(facet count返回null),而在路径中没有转义“/”时,会返回正确的计数

有效的完整查询是
select?q=test&q.op=AND&start=0&rows=10&defType=edismax&qf=contents\u txt&facet=true&facet.mincount=1&facet.field=path\u subgent\u path&facet.limit=-1&fq=path\u subgent\u path%3A%5C%2Fhome%5C%2Fuser1%5C%2FTestDir&f.path\u subgent.facet.prefix=%2Fhome%2Fuser1%2FTestDir

因此,我想知道对于fq参数和facet prefix中的unscaped path使用转义路径是常见的,还是遗漏了什么

请注意:根据“/”是Lucene中的一个特殊字符,如“
+-&&&&&&&&&&&&&&({}[]^”~*?:\”/“也是。但我从未需要转义“[]”,例如在处理fq参数时


非常感谢的任何帮助都是正则表达式模式匹配。这适用于预期的查询,例如主查询和筛选器查询(我不确定它是否适用于其他参数,因为它适用于令牌级别iirc)

facet前缀不是一个查询-它直接应用于匹配生成的令牌的前端


与日期范围相关的转义-如果您希望它位于查询的文字部分内,则必须转义它。在日期范围内,它用作语法。

哇,您已经回答了我所有的问题。现在这非常清楚。非常感谢@MatsLindh!