Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lucene Solr查询未解析正斜杠_Lucene_Solr - Fatal编程技术网

Lucene Solr查询未解析正斜杠

Lucene Solr查询未解析正斜杠,lucene,solr,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字段名称中的保留字符吗

我在编写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中是否有任何特殊的方式需要编码前斜杠?或者我可以使用其他分隔符吗?我已经在使用“-”和“.”用于其他目的。

我刚刚遇到了同样的问题,经过一些实验发现,如果字段名中有正斜杠,则必须在Solr查询中用反斜杠将其转义(但请注意,您不必在字段列表参数中执行此操作,因此在“q”字段中输入搜索包含my_值的
/my/field/name

\/my\/field\/name:my\/u值

我还没有尝试过排序字段,但请尝试此字段并让我们知道:)

这是Solr 4.0.0 alpha上的内容。

来自Solr wiki,网址为:

Solr4.0增加了正则表达式支持,这意味着“/”现在是 一个特殊字符,在搜索文本时必须转义 正斜杠


在我的情况下,我需要使用通配符搜索正斜杠
/
,例如:

+(*/*)
+(*2016/17*)
我试着这样逃避:

+(*2016\/*)
+(*2016\/17*)
但这也不起作用

解决方案是用双引号
将文本包装起来,就像:

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

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

两者都返回了相同的结果,有无转义正斜杠

对于转义字符,请检查转义Solr字符,并滚动到的底部以了解如何编写URL。希望此帮助感谢链接,但是“/"字符不在可疑solr字符列表中,我的URL编码也没有问题。仅供参考,我已决定通过在字段名中替换/为u来解决此问题。Doh!我刚刚遇到了相同的问题。
/
也不在我检查的特殊字符列表中。我尝试过编码、引号等。这对我来说运气都不好r=(可能是您正在使用一个标记化器,它在/schema.xml上拆分索引,并尝试使用schema.xml中的solr.StrField。问题似乎是,当找到正斜杠时,solr将字符串视为正则表达式:;按照@tw123的建议,使用斜杠转义应该可以解决您的问题。