Хорошо, значит, я нашел решение.
Я проиндексировал все поля с помощью WhiteSpaceAnalyzer.Кажется, что NHibernate.Search использует StandardAnalyzer по умолчанию, независимо от того, что я установил глобальный AnalyzerClass в WhiteSpaceAnalyzer.После разбора запроса это выглядело так:
"+Search:name~0.7 +Moderated:true -PlaceType:wrongtype"
, который не работал, потому что значения в поле PlaceType не были в нижнем регистре.
Изменение кода в вопросе на что-то вроде этого:
var fts = NHibernate.Search.Search.CreateFullTextSession(this._session);
var queryParser = new QueryParser("text", new WhitespaceAnalyzer());
var luceneQuery = "Search:name~0.7 AND Moderated:true NOT PlaceType:WrongType";
var query = queryParser.Parse(luceneQuery);
var places = fts.CreateFullTextQuery(query, typeof(Place))
.List<Place>();
разрешил ситуацию.