2011-08-29 121 views
8

正斜杠“/”是solr字段名称中的保留字符吗?Solr查询不解析正斜杠

我无法写一个Solr的排序查询,这将包含一个斜杠领域解析“/”

当进行HTTP查询到我的Solr服务器:

q=*&sort=normal+desc 

会起作用,但

q=*&sort=with/slash+desc 
q=*&sort=with%2Fslash+desc 

都失败说 “的多值字段不能使用FieldCache:用”

每个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中的斜线?或者还有我可以使用的任何其他分隔符?我已经在使用“ - ”和“。”用于其他目的。

+2

转义字符,请查看HTTP:/ /stackoverflow.com/questions/1133573/solr-sanitizing-query转义Solr字符并滚动到http://wiki.apache.org/solr/SolrQuerySyntax的底部以了解如何编写URL。希望这可以帮助 – aitchnyu

+0

感谢您的链接,但“/”字符不在可疑的solr字符列表中,并且我的URL编码不是问题。仅供参考,我已决定通过在字段名称中替换/使用_来解决此问题。 – Akusete

+0

Doh!我遇到了同样的问题。 '/'不在我检查特殊字符的列表中。我尝试过编码,引号等等。对我来说,没有运气=( – Justin

回答

6

我刚刚遇到同样的问题,经过一些实验发现,如果您在字段名称中有正斜杠,则必须在Solr查询中使用反斜杠将其转义(但请注意,您不需要要做到这一点在字段列表参数,所以查找包含MY_VALUE /my/field/name搜索进入了“q”字段:

\/my\/field\/name:my_value

我没有尝试过的排序字段,但是试试这个,让我们知道:)

这是关于S olr 4.0.0 alpha。

-1

在我来说,我需要与外卡*,例如搜索斜杠/

+(*/*) 
+(*2016/17*) 

我试图逃避它,像这样:

+(*2016\/*) 
+(*2016\/17*) 

但没”也工作。

的解决方案是用双引号"包文喜欢做:

+("*\/*") 
+("*/*") 

+("*2016\/17*") 
+("*2016/17*") 

都返回相同的结果与不逃避斜线