2017-01-19 53 views
0

如何使用Lucene在List<string>上進行查詢?這是我的嘗試,但我得到了一個錯誤。RavenDb LuceneQuery:如何在列表上查詢<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(); 

AvalibleOnServicesList<string>()serviceMoviestring

+0

您正在比較'List '和'string'。你想用這個做什麼?查詢哪些'AvailableOnServices'列表*包含*'serviceMovie'?如果是這樣,你爲什麼要使用Lucene的呢? –

回答

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>當你ca因此您將能夠調用特定於Raven的內容,例如TransformWithLazily