How to implement complex search functionality?
Use Fulltext:

FULLTEXT(postTitle, des)


and

AND MATCH(postTitle, des) AGAINST("+post +test" IN BOOLEAN MODE)


Construct, and optionally leave out, any tests that are not requested.  That is, don't include this line if there are only 20 rooms:

AND (room &gt;= 0 and room &lt;= 20)


Don't bother will bath &gt;= 0 since it is UNSIGNED.

Gather typial queries.  Either by asking 'users' what they will ask about or by collecting queries on the fly.  Then construct the 'optimal' indexes.

But, first, note that if the MATCH clause is included, it will be the only index used.  That is, for cases where the user is not testing on postTitle and des, then we can look at indexing.

Clarification:  It will use the FT index first, then filter on any other WHERE clause, but without the benefit of INDEXes.  The assumption is that FT filters down to very few rows, and the subsequent filtering is not a problem.

The only two useful columns in the above example are those with =.  So:

INDEX(areaId, availableFrom)


But, after looking a user activity, you may find others.

See also Elasticsearch.