내가 지정한 모든 태그가있는 모든 블로그 게시물을 다시 가져오고 싶습니다.RavenDB - 여러 용어로 컬렉션 쿼리하기
public class Post
{
public int Name { get; set; }
public List<string> Tags { get; set; }
}
'C#'및 'html'태그가있는 모든 게시물을 가져오고 싶습니다.
이 예제는 내 예제와 똑같은 질문입니다. Linq query with multiple Contains/Any for RavenDB
태그에 'C#'및 'html'이 포함 된 게시물이 하나있는 경우 아래 예제에서 결과가 반환되지 않는 이유를 알고 싶습니다.
사람이 이상적으로 강력한 형식의 쿼리 구문의 예
var query = s.Query<Entity, IndexClass>()
으로, 지금이 문제를 해결하기 위해 새로운, 더 우아한 방법이 있는지에 빛을 흘릴 수 있다면 그것은 좋은 것입니다 -
using System.Collections.Generic;
using System.Linq;
using NUnit.Framework;
using Raven.Abstractions.Indexing;
using Raven.Client.Embedded;
using Raven.Client.Indexes;
namespace RavenDB
{
public class Blog
{
public string Name { get; set; }
public List<string> Tags { get; set; }
}
public class BlogsByTags : AbstractIndexCreationTask<Blog>
{
public BlogsByTags()
{
Map = docs => from doc in docs
select new
{
Tags = doc.Tags
};
Index(x => x.Tags, FieldIndexing.Analyzed);
}
}
[TestFixture]
public class Runner : UsingEmbeddedRavenStore
{
[Test]
public void Run()
{
Open();
IndexCreation.CreateIndexes(typeof(BlogsByTags).Assembly, Store);
var blogs = new List<Blog>
{
new Blog{Name = "MVC", Tags = new List<string>{"html","c#"}},
new Blog{Name = "HTML5", Tags = new List<string>{"html"}},
new Blog{Name = "Version Control", Tags = new List<string>{"git"}},
};
using (var session = Store.OpenSession())
{
foreach (var blog in blogs)
{
session.Store(blog);
}
session.SaveChanges();
}
var tags = new List<string> { "c#", "html" };
List<Blog> blogQueryResults;
using (var s = Store.OpenSession())
{
blogQueryResults = s.Advanced.LuceneQuery<Blog, BlogsByTags>()
.Where(string.Format("Tags:({0})", string.Join(" AND ", tags))).ToList();
}
Assert.AreEqual(1, blogQueryResults.Count());
}
}
public abstract class UsingEmbeddedRavenStore
{
protected EmbeddableDocumentStore Store { get; set; }
protected void Open()
{
Store = new EmbeddableDocumentStore
{
RunInMemory =
true
};
Store.Initialize();
}
protected void Dispose()
{
Store.Dispose();
}
}
}
어딘가에 질문이 있습니까? 귀하의 질문을 뒷받침하는 부분으로 귀하의 코드를 줄이고 질문을 명확하게하십시오. 감사. –
불명확 한 질문에 사과를 해주셔서 감사합니다. 블로그 포스트/태그를 사용하여 질문을 명확하게하고 코드를 삭제하여 관련된 측면 만 표시하도록 재 작성했습니다. – CountZero