Search with special symbol and Suggest right value when user give wrong value

Hello ,

I am using elastic-Search in my project now i am facing some problems .

  1. How can i search data with special symbol?

For example : if we have this type of data=
{
name:" mohan & sohan",
emails:"tt@gmail.com,ts@yahoo.com",
address:"H.no-1 street no. 1 gurgaon ( haryana )"
} ,
{
name:" mohan/sohan",
emails:"r.s123@gmail.com,ts@yahoo.com",
address:"H.no-1 street no ~ 1 gurgaon ( haryana )"
} ,
{
name:" ram-sharma",
emails:"rs@gmail.com,rs@yahoo.com",
address:"H.no-1/2 street no. 1 gurgaon ( haryana )"
}

search with uri search api like
/index/type/_search?q=t@gma
/index/type/_search?q=( haryana )
/index/type/_search?q=*1/2 *

for first query it gives blank result.
for second query it gives different result.
for third query it gives parsing error.

2.How can i suggest right value when user enter wrong value?

consider above data

For Example: /index/type/_search?q=pp@gmal.om

I have used both suggester (term, phrase) it gives different result

means if we use phrase suggester it gives these result for above query
tt gmal om , pp gmail om ,pp gmal com

and in term suggester it give these result

pp@gmal.om , tt , gmail , com gmail.com ,com

I need this type of suggestion

For Example: /index/type/_search?q=pp@gmal.om
pp@gmal.om not in my database so it should suggest tt@gmail.com

Please help me .

Thank you
Tarun Tyagi