gpt4 book ai didi

c# - Nest Elasticsearch通配符查询可用作查询字符串,但不能与流畅的API一起使用

转载 作者:行者123 更新时间:2023-12-03 00:47:14 30 4
gpt4 key购买 nike

我的索引中大约有一百个测试文档,这些文档是使用NBuilder构建的:

[
{
"title" : "Title1",
"text" : "Text1"
},
{
"title" : "Title2",
"text" : "Text2"
},
{
"title" : "Title3",
"text" : "Text3"
}
]

我想用通配符查询它们,以查找所有以“文本”开头的“文本”项。但是,当我在Nest中使用两个通配符方法时,会得到两个不同的结果。
var response = await client.SearchAsync<FakeFile>(s => s.Query(q => q
.QueryString(d => d.Query("text:Text*")))
.From((page - 1) * pageSize)
.Size(pageSize));

这将返回100个结果。但是我正在尝试使用流利的API而不是querystring。
var response = await client.SearchAsync<FakeFile>(s => s
.Query(q => q
.Wildcard(c => c
.Field(f => f.Text)
.Value("Text*"))));

这将返回0个结果。我是Elasticsearch的新手。我试图使示例尽可能简单,以确保我逐篇理解。我不知道为什么第二个查询没有返回任何内容。请帮忙。

最佳答案

假设您的文本字段的类型为text,那么在索引编制过程中,elasticsearch会将Text1作为text1内部存储在反向索引中。使用查询字符串查询时,会发生完全相同的分析,但使用通配符查询时,则不会发生。
.QueryString(d => d.Query("text:Text*")))寻找text*,而.Wildcard(c => c.Field(f => f.Text).Value("Text*")))寻找Text*,但是elasticsearch在内部仅存储第一个。

希望能有所帮助。

关于c# - Nest Elasticsearch通配符查询可用作查询字符串,但不能与流畅的API一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58702138/

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