If I have search that has a lot of different options, then url becomes very long and looks very bad. Is there anyway to make urls look better? Using POST to make search would keep urls clean, but people couldn't share search urls.
You can encode all of your search criteria into something like a hash and then have a single parameter in your querystring that has that value:
I'm not sure exactly how you'd encode everything, but it wouldn't be too difficult.
Try doing an advanced search with many options on Google: the URL is long and not especially human-readable. I really don't think that's a problem; I don't think many people read URLs often. If you expect people to share search results, then show a button on the search results page that will generate a tinyURL-style shortened URL for that particular query.
A POST is meant for something that changes server state (e.g. a database update) and really shouldn't be used for a search.
Do the different options actually need to be in the URL? For example, a quick search from my Firefox search window gives a URL like:
If I'm sending the link to anyone, I habitually cut off everything after
q=search. Why not have the URL be the bare minimum that you need to send the link to someone (or bookmark), and make the rest as invisible POST variables?