如何使用Lucene对List<string>
进行查询?这是我的尝试,但我收到了一个错误。
var top10MoviesQuery = session.Advanced.DocumentQuery<Media, Media_Index>()
.SetResultTransformer("MediaListTransformer")
.SelectFields<MediaListProjection>()
.WhereEquals(o => o.AvalibleOnServices, serviceMovie) <---- here
.OrderByDescending(o => o.OurScore)
.Take(10)
.Lazily();
AvalibleOnServices
是List<string>()
,serviceMovie
是string
。
答案 0 :(得分:1)
我假设您的目的是查询AvailableOnServices
列表包含serviceMovie
的文档。如果是这样的话,你可以做这样的事情,你就不需要Lucene来做这么简单的事情:
var top10MoviesQuery = session.Query<Media, Media_Index>()
.Where(x => x.AvailableOnServices.Contains(serviceMovie))
.Take(10)
.TransformWith<MediaListTransformer, MediaListProjection>()
.Lazily();
请注意:
MediaListProjection
是MediaListTransformer
变换的内容,因为您没有提及,using Raven.Client.Linq;
才能在结果上调用TransformWith
- 通过导入此命名空间,您将获得IRavenQueryable<T>
而不是常规IQueryable<T>
致电Where
,以便您可以调用特定Raven的内容,例如TransformWith
和Lazily
。