如何在 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")))));
希望对您有所帮助。
我想为此 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")))));
希望对您有所帮助。