I am building a back end that will handle requests from web apps and mobile device apps.
I am trying to decide if an TCP server is appropriate for this vs. Regular http GET and POST requests.
Use case 1:
1. Client on mobile device executes a search on the device for the word "red".

Word sent to server (unclear wether JSON or TCP somehow) 
The word red goes to the server and the server pulls all rows from a mysql db that have red as their color (this could be ~5000 results).
Alternate step 2 (maybe TCP should make more sense here):  there is a hashmap built with the word red as the key and the value a pointer to an array of all the objects with the word red (I think this will be a faster look up time).
Data is sent to the phone (either JSON or some other way, not sure). I am unclear on this step.
The phone parses, etc...

There is a possibility that I may want to keep the array alive on the server until the user finishes the query (since they could continue to filter down results).
Based on this example, what is the architecture I should be looking at?
Any different way is highly appreciated.
Thank you
In your case I would use the HTTP because:

Your service is stateless.
If you use TCP you will have problem scaling up your service (since every request will be directed to the server that establish the TCP connection ), this relate to that your service is stateless. In HTTP you just add more servers behind load balane
For TCP you will need to state some port which can be block due to firewall and ect' - you can use port 80/8080 but I don't think this is good practice 
if you service were more like suggestion that change as the use typein his word you may want to use TCP/HTTP Socket
TCP is used for more long term connection - like Security system that report the state of the system every X seconds - which is not the case
Should I build a TCP server or use simple http messages for a back-end?