Solr Query不解析正斜杠

时间:2011-08-29 06:16:54

标签: lucene solr

正向斜杠“/”是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中对正斜杠进行编码吗?或者我可以使用其他任何分隔符吗?我已经在使用' - '和“。”用于其他目的。

3 个答案:

答案 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*")

返回相同的结果有和没有转义正斜杠