正向斜杠“/”是solr字段名称中的保留字符吗?
我在编写solr排序查询时遇到问题,该查询将解析包含正斜杠的字段“/”
对我的solr服务器进行http查询时:
q=*&sort=normal+desc
会工作但是
q=*&sort=with/slash+desc
q=*&sort=with%2Fslash+desc
两个都失败说“不能在多值字段上使用FieldCache:with”
每个solr文档包含两个int字段“normal”和“with / slash”。我的solr架构将字段索引为
...
<field name="normal" type="int" indexed="true" stored="true" required="false" />
<field name="with/slash" type="int" indexed="true" stored="true" required="false" />
...
我需要在solr中对正斜杠进行编码吗?或者我可以使用其他任何分隔符吗?我已经在使用' - '和“。”用于其他目的。
答案 0 :(得分:6)
我刚遇到同样的问题,经过一些实验发现,如果你在字段名中有正斜杠,你必须在Solr查询中用反斜杠转义它(但是注意您不必在字段列表参数中执行此操作,因此在“q”字段中输入搜索包含my_value的/my/field/name
的搜索:
\/my\/field\/name:my_value
我没有尝试过排序字段,但试试这个并告诉我们:)
这是Solr 4.0.0 alpha。
答案 1 :(得分:2)
来自https://wiki.apache.org/solr/SolrQuerySyntax的solr wiki:
Solr 4.0添加了正则表达式支持,这意味着现在是'/' 一个特殊字符,如果搜索文字必须转义 正斜线。
答案 2 :(得分:0)
在我的情况下,我需要使用通配符/
搜索正斜杠*
,例如:
+(*/*)
+(*2016/17*)
我试图像这样逃避它:
+(*2016\/*)
+(*2016\/17*)
但这也不起作用。
解决方案是用双引号"
包装文本,如do:
+("*\/*")
+("*/*")
+("*2016\/17*")
+("*2016/17*")
返回相同的结果有和没有转义正斜杠