[ 
https://issues.apache.org/jira/browse/OLINGO-1378?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16898891#comment-16898891
 ] 

Ralf Handl commented on OLINGO-1378:
------------------------------------

The OData 4.0 syntax for $search was overly restrictive regarding special 
characters, this has been relaxed in OData 4.01, see 
[https://github.com/oasis-tcs/odata-abnf/blob/master/abnf/odata-abnf-construction-rules.txt#L352-L360]:
{quote}
A searchWord is a sequence of one or more non-whitespace characters, excluding 
- literal or percent-encoded parentheses "(", "%28", "%29", ")"
- literal or percent-encoded double-quotes '"' and "%22"
- the semicolon ";"
Percent-encoding is allowed, and required for characters with special meaning 
in the query part of a URL, especially "&" and "#".

Note: the words AND, OR, and NOT are sometimes operators, depending on their 
position within a search expression.
{quote}

This means that from a specification perspective double percent-encoding is 
never necessary, and single percent-encoding of the special characters # & | is 
necessary and sufficient.

Note that {{$search=bike%20%26%20car}} will match text that contains {{bike}} 
and {{&}} and {{car}}, the {{&}} is just a character and the two spaces are 
treated as implicit AND operators. Similar for {{|}}: it needs to be 
percent-encoded and is treated just as a character.

It is still not possible to search for double-quotes, they are used to enclose 
phrases demanding exact, non-fuzzy match.

> $search does not allow some special characters in search term
> -------------------------------------------------------------
>
>                 Key: OLINGO-1378
>                 URL: https://issues.apache.org/jira/browse/OLINGO-1378
>             Project: Olingo
>          Issue Type: Bug
>          Components: odata4-server
>    Affects Versions: (Java) V4 4.0.0
>            Reporter: Prakash Sagadevan
>            Priority: Major
>
> OLINGO 4.4.0 $search does not allow to search for special chars, eg. # & | ".
> *Example:*
> {code:java}
> http://host/service/Products?$search=#bike
> {code}
> {code:java}
> http://host/service/Products?$search=bike & car
> {code}
> {code:java}
> http://host/service/Products?$search=bike | car
> {code}
> {code:java}
> http://host/service/Products?$search=""bike  car""
> {code}
> OData Accept the below character in $search system query
> ||Symbol||Character||
> |A..Z|Capital Alphabet|
> |a..z|Small Alphabet|
> |0..9|Numbers|
> |-|Hyphen|
> |.|Dot|
> |_|Under scope|
> |~|Tilde|
> |!|Not symbol|
> |(|Open parentheses|
> |)|Close parentheses|
> |*|Star|
> |+|Plus|
> |,|Comma|
> |;|Semicolon|
> |:|Colon|
> |@|Email|
> |/|Slash|
> |$|Dollar|
> |'|Single quotes|
> |=|Equal|
> |%|Percentage|
> | |Space|
> |\t|Tab|
> we are getting the issue in below special character, 
> ||Symbol|
> |#|
> |&|
> |||
> |"|
> Workaround: Double encoded above special characters.
> {code:java}
> http://host/service/Products?$search=%2523bike
> http://host/service/Products?$search=bike %2526 car
> http://host/service/Products?$search=bike %257C car
> http://host/service/Products?$search="%2522bike  car%2522"
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

Reply via email to