我想为这个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"}}}}
))))));
它包含完整的数据文档(但我只想传递字符串数组(Items))并创建错误的请求:
"like": [{
"_index": null,
"_type": "data",
"doc": {
"storages": [{
"items": ["a", "b"]
}]
}
}]
答案 0 :(得分:1)
您可以通过为每个字词调用流利方法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")))));
希望它有所帮助。