微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

solr 在带有冒号的 id 上传输最短路径错误

如何解决solr 在带有冒号的 id 上传输最短路径错误

我有以下简单的表达式 expr=shortestPath(core_data,from="https\://mycompany.com/id/ARMP/AM/GT/ST/CCS1/01/03/05/96/96",to="https\://mycompany.com/id/ARMP/AM/GT/ST/CCS1/01/03/IS/02",edge="id=link_ss",maxDepth="4")

这会导致错误

java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.io.IOException: java.util.concurrent.ExecutionException: java.io.IOException: --> http://172.22.0.28:8983/solr/core_data_shard2_replica_n2/:org.apache.solr.search.SyntaxError: Cannot parse 'id:([https://mycompany.com/id/STL/KG1/pk_67_4])': Encountered " "]" "] "" at line 1,column 49.
Was expecting:
    "TO" ...
    
    at org.apache.solr.client.solrj.io.graph.ShortestPathStream.open(ShortestPathStream.java:366)
    at org.apache.solr.client.solrj.io.stream.ExceptionStream.open(ExceptionStream.java:52)
    at org.apache.solr.handler.StreamHandler$TimerStream.open(StreamHandler.java:465)
    at org.apache.solr.client.solrj.io.stream.TupleStream.writeMap(TupleStream.java:79)
    at org.apache.solr.common.util.JsonTextWriter.writeMap(JsonTextWriter.java:164)
    at org.apache.solr.common.util.TextWriter.writeMap(TextWriter.java:216)
    at org.apache.solr.common.util.TextWriter.writeVal(TextWriter.java:69)
    at org.apache.solr.response.TextResponseWriter.writeVal(TextResponseWriter.java:153)
    at org.apache.solr.common.util.JsonTextWriter.writeNamedListAsMapWithDups(JsonTextWriter.java:387)
    at org.apache.solr.common.util.JsonTextWriter.writeNamedList(JsonTextWriter.java:293)
    at org.apache.solr.response.JSONWriter.writeResponse(JSONWriter.java:73)
    at org.apache.solr.response.JSONResponseWriter.write(JSONResponseWriter.java:66)
    at org.apache.solr.response.QueryResponseWriterUtil.writeQueryResponse(QueryResponseWriterUtil.java:65)
    at org.apache.solr.servlet.HttpSolrCall.writeResponse(HttpSolrCall.java:891)
    at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:584)
    at org.apache.solr.servlet.solrdispatchFilter.doFilter(SolrdispatchFilter.java:415)
    at org.apache.solr.servlet.solrdispatchFilter.doFilter(SolrdispatchFilter.java:345)

让我进一步解释一下:我使用的链接字段是 id(单值)和 link_ss(多值)。根据我使用的顺序(id=link_sslink_ss=id),我会得到不同的错误Cannot parse 'link_ss:(https://mycomany.com/id/STL/KG1/pk_67_8/TS_67_8_5152_4 https://mycomany.com/id/STL/KG1/pk_67_4/TS_67_4_260_3 https://mycomany.com/id/STL/KG1/pk_67_4/TS_67_4_260_9) 或上面的那个。但是请注意解析错误如何包含与原始 ID 不同的 ID。因此,在遍历图形时,错误确实发生在内部。上面的查询确实不起作用,但在 id 周围加上双引号会有所帮助,即 link_ss:("https://mycomany.com/id/STL/KG1/pk_67_8/TS_67_8_5152_4") 确实有效

谢谢!

解决方法

我做了一些实验,似乎您必须在“from”字段中转义冒号 (:),而不是在流表达式的“to”字段中转义。 只需在“来自”字段中的冒号(:) 之前添加一个反斜杠 例如:

shortestPath(oana,from="http\://google.com",to="http://oana1.com",edge="link_from=link_to",maxDepth="1")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。