[ https://issues.apache.org/jira/browse/SOLR-6853?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17041321#comment-17041321 ]
Thomas Corthals commented on SOLR-6853: --------------------------------------- There is a workaround, _almost_: percent-encode the synonym/stopword twice (e.g. {{#}} → {{%23}} → {{%2523}}). This is at odds with [RFC 3986|https://tools.ietf.org/html/rfc3986#section-2.2] _and_ it still doesn't work for slashes. An actual RFC compliant fix would be preferable. You'll notice that both {{C++}} and {{C%2B%2B}} get interpreted as {{C␠␠}} (C SPACE SPACE). {{C%23anything}} acts like you'd expect from a fragment identifier, which it clearly isn't. {code:json} thomas@testbox:~$ curl -X PUT -H 'Content-type:application/json' --data-binary \ > '{"class":"org.apache.solr.rest.schema.analysis.ManagedSynonymGraphFilterFactory$SynonymManager"}' > \ > "http://localhost:8983/solr/techproducts/schema/analysis/synonyms/test" { "responseHeader":{ "status":0, "QTime":0}} thomas@testbox:~$ curl -X PUT -H 'Content-type:application/json' --data-binary '["C++","C plus plus"]' \ > "http://localhost:8983/solr/techproducts/schema/analysis/synonyms/test" { "responseHeader":{ "status":0, "QTime":0}} thomas@testbox:~$ curl -X PUT -H 'Content-type:application/json' --data-binary '["C#","C sharp"]' \ > "http://localhost:8983/solr/techproducts/schema/analysis/synonyms/test" { "responseHeader":{ "status":0, "QTime":0}} thomas@testbox:~$ curl "http://localhost:8983/solr/techproducts/schema/analysis/synonyms/test" { "responseHeader":{ "status":0, "QTime":0}, "synonymMappings":{ "initArgs":{"ignoreCase":false}, "initializedOn":"2020-02-01T11:48:35.235Z", "updatedSinceInit":"2020-02-01T11:49:01.280Z", "managedMap":{ "C plus plus":["C plus plus", "C++"], "C sharp":["C sharp", "C#"], "C#":["C sharp", "C#"], "C++":["C plus plus", "C++"]}}} thomas@testbox:~$ curl "http://localhost:8983/solr/techproducts/schema/analysis/synonyms/test/C++" { "responseHeader":{ "status":404, "QTime":0}, "error":{ "metadata":[ "error-class","org.apache.solr.common.SolrException", "root-error-class","org.apache.solr.common.SolrException"], "msg":"C not found in /schema/analysis/synonyms/test", "code":404}} thomas@testbox:~$ curl "http://localhost:8983/solr/techproducts/schema/analysis/synonyms/test/C%2B%2B" { "responseHeader":{ "status":404, "QTime":0}, "error":{ "metadata":[ "error-class","org.apache.solr.common.SolrException", "root-error-class","org.apache.solr.common.SolrException"], "msg":"C not found in /schema/analysis/synonyms/test", "code":404}} thomas@testbox:~$ curl "http://localhost:8983/solr/techproducts/schema/analysis/synonyms/test/C%252B%252B" { "responseHeader":{ "status":0, "QTime":0}, "C++":["C plus plus", "C++"]} thomas@testbox:~$ curl "http://localhost:8983/solr/techproducts/schema/analysis/synonyms/test/C%23" { "responseHeader":{ "status":404, "QTime":0}, "error":{ "metadata":[ "error-class","org.apache.solr.common.SolrException", "root-error-class","org.apache.solr.common.SolrException"], "msg":"C not found in /schema/analysis/synonyms/test", "code":404}} thomas@testbox:~$ curl "http://localhost:8983/solr/techproducts/schema/analysis/synonyms/test/C%23anything" { "responseHeader":{ "status":404, "QTime":0}, "error":{ "metadata":[ "error-class","org.apache.solr.common.SolrException", "root-error-class","org.apache.solr.common.SolrException"], "msg":"C not found in /schema/analysis/synonyms/test", "code":404}} thomas@testbox:~$ curl "http://localhost:8983/solr/techproducts/schema/analysis/synonyms/test/C%2523" { "responseHeader":{ "status":0, "QTime":0}, "C#":["C sharp", "C#"]} {code} > solr.ManagedSynonymFilterFactory/ManagedStopwordFilterFactory: URLEncoding - > Not able to delete Synonyms/Stopwords with special characters > ------------------------------------------------------------------------------------------------------------------------------------------ > > Key: SOLR-6853 > URL: https://issues.apache.org/jira/browse/SOLR-6853 > Project: Solr > Issue Type: Bug > Components: Schema and Analysis > Affects Versions: 4.10.2 > Environment: Solr 4.10.2 running @ Win7 > Reporter: Tomasz Sulkowski > Priority: Major > Labels: ManagedStopwordFilterFactory, > ManagedSynonymFilterFactory, REST, SOLR > Attachments: SOLR-6853.patch > > > Hi Guys, > We're using the SOLR Rest API in order to manage synonyms and stopwords with > solr.Managed*FilterFactory. > {_emphasis_}The same applies to stopwords. I am going to explain the synonym > case only from this point on.{_emphasis_} > Let us consider the following _schema_analysis_synonyms_en.json managedMap: { > "xxx#xxx":["xxx#xxx"], > "xxx%xxx":["xxx%xxx"], > "xxx/xxx":["xxx/xxx"], > "xxx:xxx":["xxx:xxx"], > "xxx;xxx":["xxx;xxx"], > "xxxxxx ":["xxxxxx "] > } > I can add such synonym to keyword relations using REST API. The problem is > that I cannot remove/list them as > http://localhost:8983/solr/collection1/schema/analysis/synonyms/en/<entryname> > where <entryname> is one of the map's key throws 404, or 500 (in case of > xxx%25xxx): > java.lang.NullPointerException at > org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:367) > at > org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:207) > at > org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419) > at > org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455) at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) > at > org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557) > at > org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) > at > org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075) > at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384) > at > org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) > at > org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009) > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) > at > org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255) > at > org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154) > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) > at org.eclipse.jetty.server.Server.handle(Server.java:368) at > org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489) > at > org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53) > at > org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:942) > at > org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1004) > at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:640) at > org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235) at > org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72) > at > org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264) > at > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) > at > org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) > at java.lang.Thread.run(Unknown Source) -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org