ユーザーのお気に入りのタグとブロックされたタグでLiceneQueryをフィルタリングする必要があります。ユーザーがお気に入りのタグとブロックされたタグを持っている場合、これは機能しますが、ユーザーがお気に入りのタグまたはブロックされたタグを持っていない場合に苦労しています。MatchAllDocsQueryと同等のものを使用する必要があると思いますが、RavenDBクライアントAPIを使用してこれを実現する方法がわかりません。
これは、ユーザーが1つ以上のお気に入りタグと1つ以上のブロックされたタグを持っている場合に正常に機能します。
string favesQuery = String.Join(" OR ", user.FavouriteTags.Select(x => String.Format("Tags:{0}", x)));
string blockedQuery = String.Join(" AND ", user.BlockedTags.Select(x => String.Format("-Tags:{0}", x)));
var articles = RavenSession.Advanced
.LuceneQuery<Article>("AllDocs/ByTags")
.Include(x => x.Author)
.Where(favesQuery)
.Boost(0.5m)
.Where(blockedQuery)
.OrderByDescending(x => x.DatePublished);
私が得ている当面の問題はですが、Missing where clause
これは、がString.Join
空のときにが空の文字列を返すためuser.FavouriteTags
です。favesQuery
とに何かを追加できますblockedQuery
か?
SQL用語で考えると、私はWHERE 1=1 AND ...
関連する質問https://groups.google.com/forum/?fromgroups=#!topic/ravendb/JKTpHiFRJLc