The problem is these lines:
return new PageOfItems<T>(Enumerable.Empty<T>());
var searchBuilder = Search(index).Parse(searchFields, query);
the Parse() method throws an exception when the query is empty. But, this exception does now not get thrown because of the if above that call.
So, when the user searches for "" (zerolength string), then he will get no information. And also no results. This is not clear, the exception thrown is good. So the if needs to go.