我正在使用以下代码通过 nhibernate.search 查询 lucene 索引:
var fts = NHibernate.Search.Search.CreateFullTextSession(this._session);
var luceneQuery = "Search:name~0.7 AND Moderated:true NOT PlaceType:WrongType";
var places = fts.CreateFullTextQuery<Place>(luceneQuery)
.List<Place>();
问题是查询返回所有类型的 Places,包括 WrongType。当我尝试对 Luke 中的同一索引运行相同的查询时,一切正常,不会返回 WrongType 类型的位置。
搜索字段是 Place 对象中许多字段的串联。正如我所发现的,我正在使用 Moderated 和 PlaceType 字段过滤掉一些记录,这样可以保留来自 Lucene 查询的原始排序顺序(按分数)。
如何使用 NHibernate.Search 从结果中按 PlaceType 排除 Places?