There is no way to do this natively in the datastore. The way IN works in the Datastore is that it issues one query for each item in your list, then provides the union of the results (really it is using disjunctive normal form (App Engine source code)).
Instead, you could issues the queries yourself to guarantee the order you want (first query for results that match N tags using an AND filter, then N-1, then N-2, ...).
For two tags, this would look like:
List<String> searchKeyword = Arrays.asList(q.split(","));
Query query = new Query("Car");
query.setFilter(CompositeFilter.and(Arrays.asList(
new FilterPredicate("tags", FilterOperation.EQUAL, searchKeyword.get(0)),
new FilterPredicate("tags", FilterOperation.EQUAL, searchKeyword.get(1)))));
List<Entity> entities = ds.prepare(query).asList(withLimit(10));
query.setFilter(CompositeFilter.or(Arrays.asList(
new FilterPredicate("tags", FilterOperation.EQUAL, searchKeyword.get(0)),
new FilterPredicate("tags", FilterOperation.EQUAL, searchKeyword.get(1)))));
entities.addAll(ds.prepare(query).asList(withLimit(10));
Obviously, this will only work for two tags, but can be generalized for more than that. You should probably also use the async API so that you can issue all the queries in parallel.