1

これまでのところ、次のようなインデックスがあります。

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();

これは、「Collie」や「Terrier」などの検索語を提供しても、「Coll」や「Terr」を提供しない場合に機能します。

String.Contains("Terr") のように動作するようにクエリを書き直すにはどうすればよいですか?

4

1 に答える 1

1

RavenDB では、ほとんどの場合、contains クエリは必要ないため、実行が難しくなります。おそらくあなたが望むのは、代わりに StartsWith を実行することです。

session.Query<Animals_Search.Result, Animals_Search>()
    .Where(a => a.Content.StartsWith(match))                
    .As<Animal>()
    .ToList();
于 2012-09-04T09:45:16.867 に答える