RavenDB字符串。包含在多地图索引上

RavenDB字符串。包含在多地图索引上,ravendb,Ravendb,到目前为止,我有这样一个索引: public class Animals_Search : AbstractMultiMapIndexCreationTask<Animals_Search.Result> { public class Result { public object[] Content { get; set; } } public Animals_Search() { AddMap<Dog>(a =&

到目前为止,我有这样一个索引:

public class Animals_Search : AbstractMultiMapIndexCreationTask<Animals_Search.Result> {
    public class Result {
        public object[] Content { get; set; }
    }

    public Animals_Search() {
        AddMap<Dog>(a => from b in a select new Result { Content = new object[] { b.Name, b.Breed} });
        AddMap<Cat>(a=> from bin docs select new Result { Content = new object[] { b.Name, b.Breed} });

        Index(x => x.Content, FieldIndexing.Analyzed);
    }
}
session.Query<Animals_Search.Result, Animals_Search>()
    .Search(a => a.Content, match)                
    .As<Animal>()
    .ToList();
公共类动物\u搜索:AbstractMultiMapIndexCreationTask{
公开课成绩{
公共对象[]内容{get;set;}
}
公共动物搜索(){
AddMap(a=>从b中选择新结果{Content=new object[]{b.Name,b.Breed});
AddMap(a=>从bin文档选择新结果{Content=new object[]{b.Name,b.Breed});
索引(x=>x.内容,FieldIndexing.分析);
}
}
还有这样一个查询:

public class Animals_Search : AbstractMultiMapIndexCreationTask<Animals_Search.Result> {
    public class Result {
        public object[] Content { get; set; }
    }

    public Animals_Search() {
        AddMap<Dog>(a => from b in a select new Result { Content = new object[] { b.Name, b.Breed} });
        AddMap<Cat>(a=> from bin docs select new Result { Content = new object[] { b.Name, b.Breed} });

        Index(x => x.Content, FieldIndexing.Analyzed);
    }
}
session.Query<Animals_Search.Result, Animals_Search>()
    .Search(a => a.Content, match)                
    .As<Animal>()
    .ToList();
session.Query()
.Search(a=>a.Content,匹配)
.As()
.ToList();
如果我提供像“柯利犬”或“猎犬”这样的搜索词,而不是“科尔”或“Terr”,那么这就行了


如何重写查询以使其像String.Contains(“Terr”)一样工作?

RavenDB使执行Contains查询变得很困难,因为在大多数情况下,它们是不需要的。 你可能想做的是开始

session.Query<Animals_Search.Result, Animals_Search>()
    .Where(a => a.Content.StartsWith(match))                
    .As<Animal>()
    .ToList();
session.Query()
.Where(a=>a.Content.StartsWith(匹配))
.As()
.ToList();

RavenDB使包含查询变得困难,因为在大多数情况下,它们是不需要的。 你可能想做的是开始

session.Query<Animals_Search.Result, Animals_Search>()
    .Where(a => a.Content.StartsWith(match))                
    .As<Animal>()
    .ToList();
session.Query()
.Where(a=>a.Content.StartsWith(匹配))
.As()
.ToList();

这不起作用,因为内容是对象[]。如果我将它改为字符串[],并执行类似于Content.Any(x=>x.StartsWith(match))的操作,那么它对索引的作用有多大?这不起作用,因为内容是对象[]。如果我将它改为字符串[],并执行类似于content.Any(x=>x.StartsWith(match))的操作,那么它对索引的作用有多大?