如何在 NEST 中为内部数组创建 MoreLikeThis 查询?

How to create MoreLikeThis query for inner array in NEST?

我想为此 json 查询创建 NEST 等价物:

{
    "query": {
        "more_like_this" : {
            "fields" : ["storages.items"],
            "like" :  ["a","b"],
            "min_term_freq": 1,
            "min_doc_freq": 1
        }
    }
}

我的模型是:

public class Data
{
    public string Name { get; set; }

    public InnerStorage[] Storages { get; set; }

}

public class InnerStorage
{
    public string[] Items { get; set; }
}

问题是我找不到将字符串数组传递给 MoreLikeThis 参数的方法。

LikeDescriptor 仅包含

Text(string likeText)

Document(Func<LikeDocumentDescriptor<T>, ILikeDocument> selector)

我唯一能创建的请求是

 var data =
      client.Search<Data>(
        x =>
          x.Query(
            q =>
              q.MoreLikeThis(
                s =>
                  s.Fields(Field.Create("storages.items"))
                    .Like(sel => sel.Document(d => d.Document(
                      new Data(){Storages =new[]{new InnerStorage(){Items = new[] {"a", "b"}}}}
                                                       ))))));

它包含完整的数据文档(但我只想传递字符串数组(项目))并创建错误的请求:

"like": [{
                "_index": null,
                "_type": "data",
                "doc": {
                    "storages": [{
                        "items": ["a", "b"]
                    }]
                }
            }]

您可以通过为每个术语调用流畅的方法 Text 将更多术语添加到查询的类似部分,就像在这个例子中一样:

var searchResponse = client.Search<Document>(s => s
    .Query(q => q
        .MoreLikeThis(mlt => mlt
            .Fields(f => f.Field(ff => ff.Title))
            .Like(l => l.Text("a").Text("b")))));

希望对您有所帮助。