gpt4 book ai didi

c# - 我可以将 POCO 绑定(bind)到 Elasticsearch 命中以获得更强的输入吗?

转载 作者:行者123 更新时间:2023-12-03 02:08:22 24 4
gpt4 key购买 nike

索引中的推文可以有这样的结构(不是严格的 JSON,只是试图传达结构:)

{
text: string
created_at: DateTime
mention: [
{
name: string
screen_name: string
start: int
end: int
}
],
hashtag: [
// multiple string/int props similar to mention
],
link: [
// multiple string/int props similar to mention
],
user: {
name: string
screen_name: string
profile_image_url: string
}
}

使用 NEST 客户端时,我得到了预期的命中,但我的印象是我可以映射 POCO 以绑定(bind)结果以获得更强的输入,例如
public class TweetDocument
{
public string text { get; set; }
public DateTime created_at { get; set; }
public List<Mention> mention { get; set; }
public List<Hashtag> hashtag { get; set; }
public List<Link> link { get; set; }
public User user { get; set; }
}

public class Mention
{
public string name { get; set; }
public string screen_name { get; set; }
public int start { get; set; }
public int end { get; set; }
}

// ... other POCO's for Hashtag, Link and User

字符串属性 text和日期时间属性 created_at绑定(bind)ok,但是 mention , hashtaglink当我查看响应的命中时,属性全部为空,例如
var response = client.Search<TweetDocument>(q);
var firstHit = response.Hits.Hits.FirstOrDefault();
// firstHit.Fields.hashtag, .mention, .link and .user are all null

我已经看到了一些属性,但还没有真正弄清楚如何使用它们,例如 ElasticPropertyElasticType . 如何从我的索引中填充这些集合,包括非集合 .User 子属性?

最佳答案

你应该完全能够绑定(bind)那些。

除非您指定 .Fields()您的 .Search() 中的属性(property)

如果您不指定字段,则您的文档将位于 _source 下,点击将返回 _source。如果您指定字段,它将以数组的形式返回字段,即:

 fields: {
mention.name: ["name1", "name2"]
}

这基本上是原始 _source 文档的平面 View 。

如果您可以粘贴 result.ConnectionStatus.Result 以查看结果的外观,将会有所帮助。

关于c# - 我可以将 POCO 绑定(bind)到 Elasticsearch 命中以获得更强的输入吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21730709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com