[ 
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

Reply via email to